ggplot2?圖層元素
1. 數(shù)據(jù)(data):將要可視化的數(shù)據(jù)
2. 映射(aes):數(shù)據(jù)中的變量值 一般是X\Y
3. 幾何對(duì)象(geom):如 bar 條形圖惶凝,point 散點(diǎn)圖
4. 統(tǒng)計(jì)變換(stats):對(duì)數(shù)據(jù)進(jìn)行計(jì)算
5. 標(biāo)度(scale):變量以什么形狀笋额、顏色映射到圖形上
6. 分面(facet):將數(shù)據(jù)拆開(kāi),進(jìn)行分層畫(huà)圖
7. 圖層(Layer):數(shù)據(jù)喜颁、映射稠氮、幾何對(duì)象、統(tǒng)計(jì)變換等構(gòu)成一個(gè)圖層半开。圖層可以允許用戶(hù)一步步的構(gòu)建圖形隔披,方便單獨(dú)對(duì)圖層進(jìn)行修改。
8.主題(theme):主題設(shè)定寂拆,與數(shù)據(jù)無(wú)關(guān)的圖層可以通過(guò)這個(gè)函數(shù)實(shí)現(xiàn)奢米。
9. 注釋(annotate): 對(duì)圖形增加文字類(lèi)的注釋
ggplot ()圖層
ggplot ()圖層包括數(shù)據(jù)和映射抓韩。ggplot 函數(shù)相當(dāng)于一幅基本的畫(huà)布,畫(huà)
者在上面繪制好坐標(biāo)軸鬓长,設(shè)置好基本的格局和色彩谒拴、線條。
geom_XXX ()? 圖層
geom_XXX() 指的是我們要繪制的圖形類(lèi)型涉波,常見(jiàn)包括以下:
geom_point()繪制散點(diǎn)圖
geom_bar()繪制條形圖
geom_line()繪制線圖
geom_histogram()繪制直方圖
geom_boxplot()繪制箱式圖
geom_density()繪制概率密度函數(shù)
scale_ XXX?圖層
scale_ XXX 標(biāo)度是一種函數(shù)英上,size 對(duì)大小進(jìn)行調(diào)整, shape 對(duì)形狀進(jìn)行調(diào)整啤覆,
fill苍日、col對(duì)顏色進(jìn)行調(diào)整,可根據(jù)自己喜好調(diào)整
ggplot(data =數(shù)據(jù),? aes(x =變量1 , y = 變量 2,col=變量3)) +
??? ?geom_point(stat ='count'窗声,position=”dodge”)+? #計(jì)數(shù)相恃、并排
????scale_fill_manual(values = c("顏色1","顏色2"))
facet_grid()? 圖層
facet_grid(...) 對(duì)圖層進(jìn)行分面,數(shù)據(jù)分成多個(gè)子集進(jìn)行繪圖
ggplot(data =數(shù)據(jù),? aes(x =變量 1 , y = 變量2,col=變量3)) +
geom_point(stat = 'count'笨觅,position=”dodge”)+
scale_colour_manual(values = c("顏色1","顏色2"))+
facet_grid(變量 4~變量5) #要求變量屬于分類(lèi)變量豆茫,分成多行多列的圖
theme()? 圖層
theme() 是主題修改,是一個(gè)對(duì)繪圖精雕細(xì)琢的過(guò)程, 主要對(duì)標(biāo)題屋摇、坐標(biāo)軸
標(biāo)簽揩魂、圖例標(biāo)簽等文字調(diào)整, 以及網(wǎng)格線、背景炮温、軸的顏色搭配火脉。
theme(plot.title = element_text(size = , color =, hjust =, face = ))
ggplot2?的作圖一般步驟為:
1、 準(zhǔn)備數(shù)據(jù)柒啤,一般為數(shù)據(jù)框倦挂,且一般為長(zhǎng)表,即每個(gè)觀測(cè)時(shí)間占一行担巩,每個(gè)觀
測(cè)變量占一列方援。
2、載入 R 包涛癌,R 包括可以通過(guò) tidyverse包整體載入犯戏。
3、 將數(shù)據(jù)輸入到ggplot()函數(shù)中拳话,并指定參與作圖的每個(gè)變量分別 映射到哪些
圖形特性先匪, 比如映射為 x 坐標(biāo)、y 坐標(biāo)弃衍、 顏色呀非、 形狀等。 這些映射稱(chēng)為aesthetic
mappings 或 aesthetics。
很多人不明白所謂的 映射岸裙。其實(shí)映射猖败,通俗來(lái)講,就是告訴軟件降允,這幅圖所
涉及到的變量恩闻, 并且指出每個(gè)變量的用途。 比如拟糕, x=gender判呕, 指的是x 軸是性別倦踢;
y=age送滞,指的是 y 軸表示年齡大小,shape=location辱挥,指的是不同地區(qū)圖標(biāo)的形狀
不一樣(比如城市用星號(hào)犁嗅,農(nóng)村用三角)
4、選擇一個(gè)合適的圖形類(lèi)型晤碘,函數(shù)名以 geom_開(kāi)頭褂微,如 geom_point()表示散點(diǎn)
圖。圖形類(lèi)型簡(jiǎn)稱(chēng)為 geom园爷。將ggplot()部分與 geom_xxx()部分用加號(hào)連接宠蚂。
到此已經(jīng)可以作圖,下面的步驟是進(jìn)一步的細(xì)化設(shè)定童社。
5求厕、設(shè)定適當(dāng)?shù)淖鴺?biāo)系統(tǒng), 如coord_cartesian(), scale_x_log10()等扰楼。 仍用加號(hào)連接呀癣。
6、設(shè)定標(biāo)題和圖例位置等弦赖,如 labs()项栏。仍用加號(hào)連接。
?這個(gè)流程的一個(gè)大致的模板為:
p <-ggplot(data=<輸入數(shù)據(jù)框>,
????mapping=aes(<維度>=<變量名>,
????<維度>=<變量名>, <...>))
p +geom_<圖形類(lèi)型>(<...>)+
?scale_<映射>_<類(lèi)型>(<...>) +
?coord_<類(lèi)型>(<...>)+
?labs(<...>)
其中<...>表示額外的選項(xiàng)蹬竖。變量 p 包含做出的圖形的所有數(shù)據(jù)與設(shè)定沼沈,變量
名可以任意取。
網(wǎng)上找了網(wǎng)友分享的學(xué)習(xí)筆記币厕,我照著他的代碼跑了一遍:https://blog.csdn.net/wzgl__wh/article/details/51901093
<library(ggplot2)
<ggplot(data=mpg,mapping = aes(x=cty,y=hwy))+geom_point()+aes(colour=factor(mpg$year))
其中data=mpg,mapping = aes(x=cty,y=hwy)表示數(shù)據(jù)層庆冕,geom_point()表示幾何圖形層,aes(colour=factor(mpg$year))表示美學(xué)圖層。我將year映射為映射到顏色屬性劈榨。
我們也可以繪制出它的擬合曲線以及置信區(qū)間访递,它根據(jù)年份繪出了兩條擬合曲線以及置信區(qū)間。
> ggplot(data=mpg,mapping = aes(x=cty,y=hwy))+geom_point()+aes(colour=factor(mpg$year))+stat_smooth()
只想繪制一條擬合曲線和一個(gè)置信區(qū)間同辣,我們只需要將代碼稍微改變一下就可以搞定拷姿。
> ggplot(data=mpg,mapping = aes(x=cty,y=hwy))+geom_point(aes(colour=factor(mpg$year)))+stat_smooth()
現(xiàn)在將displ變量映射到散點(diǎn)大小惭载,繪制出來(lái)的大小不同的散點(diǎn)。
> ggplot(data=mpg,mapping =aes(x=cty,y=hwy))+
+? ? ?geom_point(aes(colour=factor(year),size=displ))+
+? ? ?stat_smooth()
使用過(guò)Photoshop的人一定知道透明度响巢,即alpha描滔。當(dāng)然我們的ggplot2包也可以改變alpha值得大小來(lái)改變散點(diǎn)的透明度。alpha的值在0—1之間踪古,不在這個(gè)范圍的話則會(huì)報(bào)錯(cuò)含长。為了與前面的圖片有明顯的區(qū)別,我們?cè)龠@里的alpha值調(diào)的比較小伏穆。一般默認(rèn)alpha值得大小為1拘泞。
> ggplot(data=mpg,mapping = aes(x=cty,y=hwy))+
+? ? ?geom_point(aes(colour=factor(mpg$year),size=displ),alpha=0.25)+
+? ? ?stat_smooth()
也可以給圖片增加標(biāo)題,并精細(xì)修改圖片枕扫,給圖片增加x,y軸說(shuō)明陪腌,以及其他說(shuō)明。
ggplot(mpg, aes(x=cty, y=hwy))+
? geom_point(aes(colour=class,size=displ),alpha=0.6,position = "jitter")+
? stat_smooth()+
? scale_size_continuous(range = c(4, 10))+
? facet_wrap(~ year,ncol=1)+
? ggtitle("汽車(chē)油耗與型號(hào)")+
? labs(y='每加侖高速公路行駛距離',
? ? ? x='每加侖城市公路行駛距離')+
? guides(size=guide_legend(title='排量'),
? ? ? ? colour = guide_legend(title='車(chē)型',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? override.aes=list(size=5)))
?我們可以把不同的圖層疊加在一起烟瞧,這樣就畫(huà)在了同一張圖上面诗鸭。比如說(shuō)我們要研究mpg數(shù)據(jù)中cty和hwy,以及displ之間的關(guān)系参滴,我們就可以通過(guò)如下代碼强岸,將他們之間的散點(diǎn)圖畫(huà)在一起。
?ggplot()+? geom_point(aes(x=mpg$cty,y=mpg$hwy),color="red")+
?geom_point(aes(x=mpg$cty,y=mpg$displ),color="green")
接下來(lái)砾赔,我們來(lái)繪制一個(gè)扇形圖蝌箍,我們來(lái)統(tǒng)計(jì)一下class中各個(gè)品牌所占比例,代碼和圖片如下:
ggplot(mpg)+geom_bar(width=1, aes(x=factor(1),fill=mpg$class))+? coord_polar(theta="y")
也可以通過(guò)使用ggplot2包來(lái)繪制?Coxcomb?Plots (雞冠花圖过蹂,又名玫瑰圖)十绑,這個(gè)也非常簡(jiǎn)單。width的值可以調(diào)整各個(gè)扇形區(qū)域之間的距離酷勺。
ggplot(mpg, aes(x= factor(mpg$class))) +? geom_bar(width=0.7,aes(color=factor(mpg$class))) + coord_polar()
也可以給他增添顏色本橙,代碼只要稍微改一下:
ggplot(mpg, aes(x= factor(mpg$class),fill=mpg$class)) +? geom_bar(width=0.7) + coord_polar()
這樣跑下來(lái)加深了對(duì)于開(kāi)始說(shuō)的ggplot2?的作圖步驟的理解。