第一部分探索--第1章 使用ggplot2進(jìn)行數(shù)據(jù)可視化

1.1 簡(jiǎn)介

tidyverse的一個(gè)核心R包--ggplot2
首先安裝tidyverse
install.packages("tidyverse")
其次要加載tidyverse:
library(tidyverse)
R包只需安裝一次欢嘿,但每次開始新會(huì)話時(shí)都要重新加載蚯根。

1.2 第一步

1.2.1 mpg數(shù)據(jù)框

數(shù)據(jù)框:是變量(列)和觀測(cè)(行)的矩形集合痢法。
mpg:包含了由美國(guó)環(huán)境保護(hù)協(xié)會(huì)收集的38種車型的觀測(cè)數(shù)據(jù)。

mpg

?mpg:了解更多關(guān)于mpg的信息赌躺,每個(gè)變量代表什么邻奠。舉例:displ: 引擎大小稚伍,單位為升疼蛾;hwy: 汽車在高速公路上行駛時(shí)的燃油效率,單位為英里/加侖愉舔。效率高耗油少效率低耗油多钢猛。

1.2.2 創(chuàng)建ggplot圖形

ggplot(data=mpg)+
geom_point(mapping=aes(x=displ, y=hwy))

1.jpeg

提示: displ和hwy之間是負(fù)相關(guān)=大引擎更耗油
ggplot(data=mpg) 創(chuàng)建一張空白圖
函數(shù)geom_point()=創(chuàng)建散點(diǎn)圖
ggplot2中每個(gè)幾何對(duì)象函數(shù)都有一個(gè)mapping參數(shù)。mapping參數(shù)總是與aes()函數(shù)成對(duì)出現(xiàn)屑宠,aes()函數(shù)的x參數(shù)和y參數(shù)分別指定了映射到x軸的變量與映射到y(tǒng)軸的變量厢洞。

1.2.3 繪圖模板

ggplot(data=<DATA>)+
<GEOM_FUNCTION>(mapping=aes(<MAPPINGS>))
接下來(lái)的部分是展示如何完成并擴(kuò)展這個(gè)模板,以制作出各種類型的圖。

1.3 圖形屬性映射

定義/概念學(xué)習(xí)
圖形屬性:是圖中對(duì)象的可視化屬性躺翻,其中包括數(shù)據(jù)點(diǎn)的大小丧叽,形狀和顏色。
標(biāo)度變換:ggplot2會(huì)自動(dòng)為每個(gè)變量值分配唯一的圖形屬性水平的這個(gè)過(guò)程公你。
aes():將圖層中使用的每個(gè)圖形屬性映射集合在一起踊淳,然后傳遞給該圖層的映射參數(shù)

舉例1:將點(diǎn)的顏色映射為變量class,從而揭示每輛汽車的類型
ggplot(data=mpg)+
geom_point(mapping=aes(x=displ, y=hwy, color=class))

2

舉例2:將無(wú)序變量class映射為有序圖形屬性size:
ggplot(data=mpg)+
geom_point(mapping=aes(x=displ, y=hwy, size=class))

3

舉例3:將變量class映射為不同點(diǎn)透明度:
ggplot(data=mpg)+
geom_point(mapping=aes(x=displ, y=hwy, alpha=class))
4

舉例4:將變量class映射為不同形狀:
ggplot(data=mpg)+
geom_point(mapping=aes(x=displ, y=hwy, shape=class))
5

“gglot2只能同時(shí)使用6種形狀”

為幾何對(duì)象設(shè)置圖形屬性陕靠,要在函數(shù)aes()的外部進(jìn)行設(shè)置迂尝,并為這個(gè)圖形屬性選擇一個(gè)有意義的值
ggplot(data=mpg)+
geom_point(mapping=aes(x=displ, y=hwy), color="blue")

6

此時(shí)顏色不會(huì)傳達(dá)關(guān)于變量的信息,只是改變圖的外觀剪芥。
顏色名稱是一個(gè)字符串垄开;點(diǎn)的大小毫米表示;點(diǎn)的形狀是一個(gè)數(shù)值税肪。

舉例說(shuō)明:
ggplot(data=mpg)+
geom_point(mapping=aes(x=displ, y=hwy), shape=24, color="red",fill="white")

7

8

1.4 常見問(wèn)題

  • 檢查是否輸入正確的代碼
  • “+” 必須放在一行代碼的末尾溉躲,不是開頭
  • 運(yùn)行?函數(shù)名或者選定函數(shù)名稱后按F1鍵益兄,可以獲得任何R函數(shù)的幫助信息
  • 閱讀錯(cuò)誤消息
  • 搜Google

1.5 分面 (特別適合添加分類變量)

1.5.1 函數(shù)facet_wrap()
ggplot(data=mpg)+
geom_point(mapping=aes(x=displ, y=hwy))+
facet_wrap(~class, nrow=2)

9

1.5.2 函數(shù)facet_grid()
ggplot(data=mpg)+
geom_point(mapping=aes(x=displ, y=hwy))+
facet_wrap(drv ~ cyl)

10

1.6 幾何對(duì)象

幾何對(duì)象:圖中用來(lái)表示數(shù)據(jù)的幾何圖形對(duì)象锻梳。
條形圖——條形幾何對(duì)象
折線圖——直線幾何對(duì)象
箱線圖——矩形和直線幾何對(duì)象
散點(diǎn)圖——點(diǎn)幾何對(duì)象——geom_point
曲線圖——平滑曲線幾何對(duì)象——geom_smooth
ggplot2提供了30多種幾何對(duì)象,其擴(kuò)展包甚至提供更多净捅。

舉例說(shuō)明
(一)1條平滑曲線
ggplot(data=mpg)+
geom_smooth(mapping=aes(x=displ,y=hwy))

11

(二)不同線性不同曲線疑枯,每條曲線對(duì)應(yīng)映射到線型的變量的一個(gè)唯一值
ggplot(data=mpg)+
geom_smooth(mapping=aes(x=displ,y=hwy,linetype=drv))
12

(三)同一張圖多個(gè)幾何對(duì)象,向ggplot2()函數(shù)添加多個(gè)幾何對(duì)象函數(shù):
舉例:
同一張圖繪制兩種幾何對(duì)象(點(diǎn)+曲線)

ggplot(data=mpg)+
geom_point(mapping=aes(x=displ, y=hwy))+
geom_smooth(mapping=aes(x=displ,y=hwy))
等于以下代碼(上個(gè)代碼有重復(fù)內(nèi)容)
將一組映射傳遞給ggplot()函數(shù)蛔六,ggplot會(huì)將這些映射作為全局映射應(yīng)用到圖中的每個(gè)幾何對(duì)象中荆永。
ggplot(data=mpg, mapping = aes(x=displ, y=hwy))+
geom_point()+
geom_smooth()
都是下圖:
13

如果將映射放在幾何對(duì)象函數(shù)中,ggplot2會(huì)將其看作這個(gè)圖層的局部映射古今,僅對(duì)該圖層有效屁魏。
ggplot(data=mpg, mapping = aes(x=displ, y=hwy))+
geom_point(mapping=aes(color=class))+
geom_smooth()
14

為不同圖層指定不同的數(shù)據(jù)
ggplot(data=mpg, mapping = aes(x=displ, y=hwy))+
geom_point(mapping=aes(color=class))+
geom_smooth(data=filter(mpg, class == "subcompact"),se=FALSE)
15

se=standard error, 是否display confidence interval around smooth

1.7 統(tǒng)計(jì)變換

定義/概念
統(tǒng)計(jì)變換 stat (statistical transformation):繪圖時(shí)用來(lái)計(jì)算新數(shù)據(jù)的算法滔以。
每個(gè)幾何對(duì)象函數(shù)都有一個(gè)默認(rèn)統(tǒng)計(jì)變換捉腥,每個(gè)統(tǒng)計(jì)變換函數(shù)都有一個(gè)默認(rèn)幾何對(duì)象。

舉例詳述:
ggplot(data=diamonds)+
geom_bar(mapping = aes(x=cut))

16

?geom_bar顯示出stat的默認(rèn)值是count:這說(shuō)明geom_bar()使用stat_count()函數(shù)可以進(jìn)行統(tǒng)計(jì)變換
繼續(xù)往下看你画,可以發(fā)現(xiàn)“computed variables”,它告訴我們stat_count()會(huì)計(jì)算出兩個(gè)新變量:count(bin中的點(diǎn)數(shù)) 和prop(groupwise proportion 比例)

想要顯示使用某種統(tǒng)計(jì)變換的3個(gè)原因如下:
(1) 想要覆蓋默認(rèn)的統(tǒng)計(jì)變換
條形高度已經(jīng)存在與數(shù)據(jù)抵碟,而不是像前一個(gè)圖一樣,條形高度由對(duì)行進(jìn)行計(jì)數(shù)來(lái)生成:


<- 賦值坏匪;tibble:簡(jiǎn)單數(shù)據(jù)框拟逮,用tidyverse中的tibble包實(shí)現(xiàn)。

(2) 想要覆蓋從統(tǒng)計(jì)變換生成的變量到圖形屬性的默認(rèn)映射适滓。
舉例: 你或許想要顯示一張表示比例而不是計(jì)數(shù)的條形圖
ggplot(data=diamonds)+
geom_bar(mapping = aes(x=cut, y=..prop.., group=1))

17

(3) 在代碼中強(qiáng)調(diào)統(tǒng)計(jì)變換
舉例:使用stat_summary()函數(shù)將人們的注意力吸引到你計(jì)算出的那些摘要統(tǒng)計(jì)量上敦迄。
ggplot(data=diamonds)+
stat_summary(mapping=aes(x=cut,y=depth),fun.ymin=min,fun.ymax = max, fun.y = median)

18

ggplot2速查表已下載
(https://rstudio.com/resources/cheatsheets/)
示列

1.8 位置調(diào)整

(一)為條形圖上色
ggplot(data=diamonds)+
geom_bar(mapping = aes(x=cut, color=cut))

19

ggplot(data=diamonds)+
geom_bar(mapping = aes(x=cut, fill=cut))

20

如果將圖形屬性映射到另一個(gè)變量(如,clarity),那么條形會(huì)自動(dòng)分塊堆疊起來(lái)罚屋。
每個(gè)彩色矩形表示cut和clarit的一種組合苦囱。
ggplot(data=diamonds)+
geom_bar(mapping = aes(x=cut, fill=clarity))

21

這種堆疊是由position參數(shù)設(shè)定的位置調(diào)整功能自動(dòng)完成的。

(二)如果不想生成堆疊式條形圖脾猛,還可以使用以下3種選項(xiàng)之一:"identity", "fill", "dodge"撕彤。

  • position = "identity": 將每個(gè)對(duì)象直接顯示在圖中。(不太適合條形圖猛拴,因?yàn)橹丿B)

設(shè)置alpha參數(shù)為較小的書羹铅,可以使得條形略微透明
ggplot(data=diamonds, mapping = aes(x=cut,fill=clarity))+
geom_bar(alpha=1/5, position = "identity")

22

設(shè)置fill=NA, 讓條形完全透明
ggplot(data=diamonds, mapping = aes(x=cut,color=clarity))+
geom_bar(fill=NA, position = "identity")
23

  • position = "fill": 效果與堆疊相似(每組條形具有同樣的高度)
    ggplot(data=diamonds)+
    geom_bar(mapping = aes(x=cut, fill=clarity),position = "fill")
    24

-position = "dodge": 將每組中的條形依次并列放置
ggplot(data=diamonds)+
geom_bar(mapping = aes(x=cut, fill=clarity),position = "dodge")

25

(三)散點(diǎn)圖的位置調(diào)整

  • position = "jitter": 將重疊的點(diǎn)分散開來(lái) = geom_jitter()
    ggplot(data = mpg)+
    geom_point(mapping = aes(x=displ,y=hwy),position="jitter")
    26

1.9 坐標(biāo)系

- coord_flip()函數(shù):交換x軸和y軸
ggplot(data=mpg, mapping = aes(x=class,y=hwy))+
geom_boxplot()

27

ggplot(data=mpg, mapping = aes(x=class,y=hwy))+
geom_boxplot()+
coord_flip()
28

- coord_quickmap()函數(shù):為地圖設(shè)置合適的縱橫比,適用于空間數(shù)據(jù)
未安裝Package : map所以不能用數(shù)據(jù)和示例

書里的圖

- coord_polar()函數(shù):極坐標(biāo)系愉昆,揭示條形圖和雞冠花圖之間的有趣聯(lián)系
bar <- ggplot(data=diamonds)+
geom_bar(mapping = aes(x=cut,fill=cut),show.legend = FALSE, width = 1)+
theme(aspect.ratio = 1)+
labs(x=NULL, y=NULL)

bar+coord_flip()

29

bar+coord_polar()
30

1.10 圖形分層語(yǔ)法

一個(gè)正式語(yǔ)法系統(tǒng)(7個(gè)參數(shù)一同組成了圖形語(yǔ)法)

ggplot(data=<DATA>)+
<GEOM_FUNCTION>(mapping = aes (<MAPPINGS>),stat = <STAT>, position =<POSITION>+
<COORDINATE_FUNCTION>+
<FACET_FUNCTION>

如何從頭構(gòu)建一個(gè)基本圖形
step1 首先要有一個(gè)數(shù)據(jù)集
step2 通過(guò)統(tǒng)計(jì)變換將其轉(zhuǎn)換為想要顯示的信息
step3 選擇一個(gè)幾何對(duì)象來(lái)表示轉(zhuǎn)換后的數(shù)據(jù)中的每個(gè)觀測(cè)值
step4 選擇幾何對(duì)象的圖形屬性來(lái)表示數(shù)據(jù)中的變量
step5 選擇放置幾何對(duì)象的坐標(biāo)系
step6 進(jìn)一步調(diào)整幾何對(duì)象在坐標(biāo)系中的位置(位置調(diào)整)职员,將圖劃分為多個(gè)子圖(分面)...

使用這種方法可以構(gòu)建任何圖形。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末跛溉,一起剝皮案震驚了整個(gè)濱河市廉邑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌倒谷,老刑警劉巖蛛蒙,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異渤愁,居然都是意外死亡牵祟,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門抖格,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)诺苹,“玉大人,你說(shuō)我怎么就攤上這事雹拄∈毡迹” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵滓玖,是天一觀的道長(zhǎng)坪哄。 經(jīng)常有香客問(wèn)我,道長(zhǎng)势篡,這世上最難降的妖魔是什么翩肌? 我笑而不...
    開封第一講書人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮禁悠,結(jié)果婚禮上密强,老公的妹妹穿的比我還像新娘怀樟。我一直安慰自己就漾,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開白布隶糕。 她就那樣靜靜地躺著,像睡著了一般站玄。 火紅的嫁衣襯著肌膚如雪若厚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評(píng)論 1 304
  • 那天蜒什,我揣著相機(jī)與錄音测秸,去河邊找鬼。 笑死灾常,一個(gè)胖子當(dāng)著我的面吹牛霎冯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播钞瀑,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼沈撞,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了雕什?” 一聲冷哼從身側(cè)響起缠俺,我...
    開封第一講書人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎贷岸,沒想到半個(gè)月后壹士,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡偿警,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年躏救,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片螟蒸。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡盒使,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出七嫌,到底是詐尸還是另有隱情少办,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布诵原,位于F島的核電站英妓,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏皮假。R本人自食惡果不足惜鞋拟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望惹资。 院中可真熱鬧,春花似錦航闺、人聲如沸褪测。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)侮措。三九已至懈叹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間分扎,已是汗流浹背澄成。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留畏吓,地道東北人墨状。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像菲饼,于是被迫代替她去往敵國(guó)和親肾砂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355