R語言學(xué)習(xí)指南(2) ggplot2中的一些關(guān)鍵概念

美學(xué)铣卡,幾何链韭,映射,比例尺煮落,都是什么敞峭?

本節(jié)主要向初學(xué)者簡要介紹ggplot2中的一些關(guān)鍵概念

先看下面的代碼:

ggplot(celebs,aes(x = age, y = oscars)) +
  geom_point(size = 7,aes(color = gender)) +
  geom_text(aes(label = name))

乍一看,對于ggplot2的初學(xué)者來說蝉仇,這似乎簡直是胡言亂語旋讹。你可能猜測到ggplot是一個(gè)函數(shù)兢卵,并且此代碼生成的可視化結(jié)果可能表示點(diǎn)和文本猿棉。但到底aes是什么或者geom_text或者size是什么意思?

Rplot.png

要在ggplot2中實(shí)現(xiàn)數(shù)據(jù)可視化开睡,首先需要了解一些關(guān)鍵概念害驹。一旦了解了它們鞭呕,任何可視化都將變得更加容易。本節(jié)中我將不會(huì)創(chuàng)建精美的可視化圖宛官,也不會(huì)創(chuàng)建有意義的可視化葫松。但是,我們將學(xué)習(xí)一些重要的關(guān)鍵概念:美學(xué)底洗,映射腋么,幾何和比例。將用大部分示例來幫助大家了解它們的含義

首先安裝tidyverse

install.packages("tidyverse")
library(tidyverse)

繼續(xù)枷恕,將以下代碼粘貼到Rstudio的代碼編輯區(qū)党晋。先無需知道代碼的工作原理,只需將其粘貼并查看它是否產(chǎn)生與以下相同的輸出

celebs <- tibble(
    name = c("Brad Pitt", "Daniel Day-Lewis", 
             "Tom Hanks", "Natalie Portman", 
             "Kate Winslet", "Cate Blanchett"),
    age  = c(56, 62, 63, 38, 44, 50),
    oscars = c(0, 3, 2, 1, 1, 2),
    gender = c("male", "male", "male", 
               "female", "female", "female")
  ) %>% 
  mutate(oscars = as.factor(oscars))
celebs
# A tibble: 6 x 4
  name               age oscars gender
  <chr>            <dbl> <fct>  <chr> 
1 Brad Pitt           56 0      male  
2 Daniel Day-Lewis    62 3      male  
3 Tom Hanks           63 2      male  
4 Natalie Portman     38 1      female
5 Kate Winslet        44 1      female
6 Cate Blanchett      50 2      female

根據(jù)創(chuàng)建的文件可以看到湯姆·漢克斯(Tom Hanks)今年63歲徐块,贏得了兩次奧斯卡獎(jiǎng)。丹尼爾·戴·劉易斯贏得了三場灾而。我們的主要問題是胡控,如何將這些數(shù)據(jù)轉(zhuǎn)換為可視化圖像?

什么是數(shù)據(jù)可視化旁趟?

在關(guān)注關(guān)鍵概念之前昼激,我們應(yīng)該先花一點(diǎn)時(shí)間來思考我們需要解決的整體問題。在數(shù)據(jù)可視化中,我們要可視化的數(shù)據(jù)(例如數(shù)字橙困,文本)

可視化什么瞧掺?就如同畫家通常在畫布上繪畫,我們也是一樣凡傅。每個(gè)新畫布都是空的辟狈。作為畫家和數(shù)據(jù)可視化工程師,我們的工作都是填補(bǔ)畫布夏跷。但是哼转,我們的畫布不是真實(shí)的東西,它是一種函數(shù)槽华。我們將此函數(shù)稱為ggplot

ggplot()
ggplot.png

ggplot2中的每個(gè)數(shù)據(jù)可視化都從此函數(shù)開始壹蔓。該函數(shù)創(chuàng)建一個(gè)我們必須填充的灰色畫布。最終猫态,我們添加到繪圖中的所有內(nèi)容都必須映射到實(shí)際數(shù)據(jù)佣蓉,從而實(shí)現(xiàn)數(shù)據(jù)可視化。如果我們像幼兒一樣在畫布上添加隨機(jī)點(diǎn)亲雪,就不會(huì)稱之為數(shù)據(jù)可視化

先舉一個(gè)例子偏螺,說明我們?nèi)绾巫龅竭@一點(diǎn):

湯姆·漢克斯(Tom Hanks)贏得了2項(xiàng)奧斯卡獎(jiǎng),他今年63歲匆光。我們可以在畫布上添加一個(gè)圓或一個(gè)點(diǎn)套像。該點(diǎn)必須以某種方式映射到數(shù)據(jù)。這就是它的工作方式:


plot1.png

年齡顯示在x軸上终息,奧斯卡數(shù)顯示在y軸上夺巩。從這個(gè)意義上說,湯姆·漢克斯不過是二維空間中的一個(gè)點(diǎn)周崭,讓我們暫時(shí)忘記要點(diǎn)柳譬。湯姆·漢克斯(Tom Hanks)也可以只是二維空間中巧克力棒的圖像:


plot2.png

關(guān)鍵是,湯姆·漢克斯的在視覺上可以是任何東西续镇。甚至只是一段文字美澳。所以這是第一條規(guī)則

在數(shù)據(jù)可視化中,我們將數(shù)據(jù)可視化為幾何對象

我們已經(jīng)看到了兩個(gè)幾何對象摸航,一個(gè)點(diǎn)和一個(gè)巧克力棒制跟。
以下更全面的列表:

一個(gè)點(diǎn)
一個(gè)矩形
一條線
路徑(或連接的線)
一個(gè)地區(qū)

在二維空間中,每個(gè)這樣的幾何對象都需要一個(gè)x坐標(biāo)和一個(gè)y坐標(biāo)酱虎。我們的Tom Hanks巧克力棒必須放在畫布上的某個(gè)位置雨膨。實(shí)際位置會(huì)影響我們解釋數(shù)據(jù)可視化的結(jié)果。如果巧克力棒在左邊读串,Tom Hanks會(huì)比實(shí)際年齡年輕聊记。因此撒妈,巧克力棒在空間中的位置與數(shù)據(jù)之間存在映射。我們稱這種映射為美學(xué)映射排监。每種美學(xué)映射都告訴我們有關(guān)幾何對象的一些可視化信息狰右。下面介紹一個(gè)可視化例子:

ggplot(celebs,aes(x = age, y = oscars)) +
  geom_point(size = 7,aes(color =oscars)) +
  geom_text(aes(label = name))
plot3.png

在這個(gè)例子中,我們將一個(gè)點(diǎn)用作幾何對象舆床。每個(gè)點(diǎn)都有三個(gè)美學(xué)映射棋蚌。首先,通過x與y峭弟,2個(gè)值將每個(gè)點(diǎn)定位在二維空間中附鸽。其次,每個(gè)點(diǎn)的顏色都不同瞒瘸,具體取決于每個(gè)電影明星獲得的奧斯卡獎(jiǎng)坷备。例如,丹尼爾·戴·劉易斯(Daniel Day-Lewis)贏得了三項(xiàng)奧斯卡獎(jiǎng)情臭。數(shù)字三被映射為紫色省撑。同樣,數(shù)字2(2項(xiàng)奧斯卡獎(jiǎng))被映射為青色俯在。我們可以如下表示該映射:

年齡-> x
奧斯卡獎(jiǎng)數(shù)-> y
奧斯卡獎(jiǎng)數(shù)->顏色

ggplot中竟秫,定義此類映射的函數(shù)為aes,在Rstudio中復(fù)制以下代碼

aes(x = age, 
    y = oscars,
    color = oscars)
Aesthetic mapping: 
* `x`      -> `age`
* `y`      -> `oscars`
* `colour` -> `oscars`

通過這種映射跷乐,每個(gè)幾何對象將根據(jù)每個(gè)電影明星的年齡和奧斯卡獎(jiǎng)的數(shù)量位于畫布相對位置肥败。此外,每個(gè)幾何對象的顏色將映射到每個(gè)電影明星贏得的奧斯卡獎(jiǎng)的數(shù)量愕提。這是我們的第二條規(guī)則

數(shù)據(jù)映射到應(yīng)用于幾何對象的美學(xué)映射

幾何對象馒稍、美學(xué)和映射之間的相互作用

現(xiàn)在我們知道,在使用ggplot2進(jìn)行數(shù)據(jù)可視化時(shí)浅侨,我們先將美學(xué)映射到幾何對象纽谒。讓我們在電影明星數(shù)據(jù)集的幫助下了解這一想法。以下數(shù)據(jù)可視化表示散點(diǎn)圖如输,即點(diǎn)作為映射到二維空間上的幾何對象

ggplot(data = celebs, mapping = aes(x = age, y = oscars)) +
  geom_point()

ggplot是一個(gè)函數(shù)鼓黔,帶有兩個(gè)參數(shù)。第一個(gè)參數(shù)是數(shù)據(jù)本身不见,第二個(gè)參數(shù)aes中是我們的美學(xué)映射澳化,稱為映射。我們用+添加的幾何對象脖祈。例如肆捕,在此可視化中,我們將點(diǎn)添加為幾何對象盖高。這些幾何對象始終以geom_開頭慎陵。然后,我們必須告訴ggplot顯示哪種幾何對象:geom_point()
上面的代碼也可以用如下方式表示:

ggplot(celebs, aes(x = age, y = oscars)) +
  geom_point()

我們不必命名參數(shù)喻奥。只要我們保持參數(shù)的順序相同席纽,就可以省略data =mapping =

因此主要概念就是:ggplot(數(shù)據(jù),aes(映射))+幾何對象

相同的美學(xué),不同的幾何對象

為了欣賞將美學(xué)映射應(yīng)用于任何幾何對象這一事實(shí)撞蚕,我們可以將geom_point更改為geom_text润梯,從而在屏幕上顯示文本:

ggplot(celebs, aes(x = age, y = oscars)) +
  geom_text(label = "Some text")

可以看到相同的x、y坐標(biāo)可以應(yīng)用于不同的幾何對象

相同的幾何對象甥厦,不同的美學(xué)

接下來纺铭,向我們的可視化中添加另外的美學(xué)映射。點(diǎn)的顏色應(yīng)映射到電影明星的性別:顏色->性別,透明度->性別

ggplot(celebs, aes(x = age, y = oscars, 
                   color = gender)) +
  geom_point(size = 9)
ggplot(celebs, aes(x = age, y = oscars, 
                   alpha = gender)) +
  geom_point(size = 9)

將美學(xué)添加到特定的幾何圖形中

當(dāng)我們向ggplot函數(shù)添加美學(xué)映射時(shí)刀疙,它將應(yīng)用于每個(gè)后續(xù)幾何對象舶赔。例如,在以下示例中谦秧,我們將美學(xué)映射顏色->性別應(yīng)用于geom_pointgeom_spoke

ggplot(celebs, aes(x = age, y = oscars, 
                   color = gender))+
  geom_point(size=9)+
  geom_spoke(angle = .45, radius =1)

可以看到我們繼續(xù)添加了geom_spoke幾何對象竟纳,它以一定角度顯示短線,而此時(shí)顏色也映射到了此幾何對象中疚鲤。
但是也許我們只想將顏色->性別的美學(xué)映射應(yīng)用于點(diǎn)而不是短線锥累。我們可以通過向geom_point添加另一個(gè)aes函數(shù)來做到這一點(diǎn):

ggplot(celebs, aes(x = age, y = oscars)) +
  geom_point(aes(color = gender),size = 9)+
  geom_spoke(angle = .45, radius =1)

此時(shí)圖中顏色只映射到了點(diǎn)的幾何對象中,并沒有改變短線的顏色

ggplot函數(shù)中的美學(xué)映射適用于任何幾何對象集歇,我們可以稱之為全局映射桶略,而幾何對象中的美學(xué)映射僅適用于此特定幾何對象,稱之為局部映射

不要將一種美學(xué)映射到多個(gè)變量

但是诲宇,此時(shí)我們應(yīng)注意不要太有創(chuàng)意际歼。例如,你可以將顏色映射到電影明星的性別和名字:

ggplot(celebs, aes(x = age, y = oscars)) +
  geom_point(size = 7, aes(color = gender)) +
  geom_text(aes(label = name, color = name),nudge_y = -0.2)

查看右側(cè)的圖例焕窝。性別是不存在布拉德·皮特(Brad Pitt)蹬挺,因?yàn)樗淮嬖凇?code>ggplot感到困惑,因?yàn)槲覀儗⒍鄠€(gè)變量應(yīng)用于一種美學(xué)它掂。不建議這樣做巴帮。一般ggplot會(huì)將第一個(gè)美學(xué)映射的名稱保留為圖例的標(biāo)題,而變量的值將用作圖例標(biāo)簽虐秋。

要了解ggplot2中各種功能榕茧,請查看官方文檔,這一節(jié)我們主要介紹了ggplot2中的一些關(guān)鍵概念,美學(xué)客给、映射用押、幾何對象等,理解這些概念是我們后續(xù)學(xué)好數(shù)據(jù)可視化分析的基礎(chǔ)靶剑,后面將會(huì)在一系列實(shí)戰(zhàn)案例中來不斷的深入學(xué)習(xí)蜻拨。

希望在學(xué)習(xí)本節(jié)后大家會(huì)感到更有信心

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末池充,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子缎讼,更是在濱河造成了極大的恐慌收夸,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件血崭,死亡現(xiàn)場離奇詭異卧惜,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)夹纫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門咽瓷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人舰讹,你說我怎么就攤上這事茅姜。” “怎么了跺涤?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵匈睁,是天一觀的道長。 經(jīng)常有香客問我桶错,道長航唆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任院刁,我火速辦了婚禮糯钙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘退腥。我一直安慰自己任岸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布狡刘。 她就那樣靜靜地躺著享潜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嗅蔬。 梳的紋絲不亂的頭發(fā)上剑按,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天,我揣著相機(jī)與錄音澜术,去河邊找鬼艺蝴。 笑死,一個(gè)胖子當(dāng)著我的面吹牛鸟废,可吹牛的內(nèi)容都是我干的猜敢。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼缩擂!你這毒婦竟也來了鼠冕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤撇叁,失蹤者是張志新(化名)和其女友劉穎供鸠,沒想到半個(gè)月后畦贸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陨闹,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年薄坏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了趋厉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡胶坠,死狀恐怖君账,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情沈善,我是刑警寧澤乡数,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站闻牡,受9級特大地震影響净赴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜罩润,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一玖翅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧割以,春花似錦金度、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至消玄,卻和暖如春跟伏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背莱找。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工酬姆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人奥溺。 一個(gè)月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓辞色,卻偏偏與公主長得像,于是被迫代替她去往敵國和親浮定。 傳聞我的和親對象是個(gè)殘疾皇子相满,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容