(注:本文基于RStudio環(huán)境)
ggplot2是什么
ggplot2 是R語言中的一個包厌殉,用于繪圖功能乍桂,相比于自帶的plot函數(shù)适肠,繪制的圖形更加優(yōu)美,如圖
玩轉(zhuǎn)ggplot2
載入包
對于初次使用這個包的用戶制圈,需要先進(jìn)行安裝ggplot2包
install.packages("ggplot2")
安裝后们童,每次使用前,需要進(jìn)行載入
library(ggplot2)
ggplot的特別之處
ggplot函數(shù)的特別之處在于它是分圖層的繪圖函數(shù)鲸鹦,也就是說繪制它的坐標(biāo)軸和點(diǎn)線是分開的慧库。一個基本的ggplot圖像的語句應(yīng)當(dāng)是這樣的
ggplot(data,aes(x,y))+
geom_xx()+
annotate()+
labs()
第一行語句表示繪制坐標(biāo)軸,x和y聲明的是作為坐標(biāo)軸的變量馋嗜,值得一提的是aes()齐板,是美學(xué)的意思,在接下來的介紹中我們可以看到葛菇,添加到aes()里的東西甘磨,會有神奇的效果。
第二行語句表示繪制點(diǎn)眯停、線等其它圖形济舆,其中的xx可以是line, point, bar, histogram等,分別表示不同的圖形樣式莺债。并且滋觉,由于ggplot函數(shù)是圖層形式的,不同的圖形可以疊加九府,如
ggplot(mtcars,aes(mpg,wt))+
geom_line()+
geom_point()
效果如圖
第三行語句
annotate()
表示添加文本注釋椎瘟;第四行語句表示添加標(biāo)題以及橫軸縱軸的名稱,如
ggplot(mtcars,aes(wt,mpg,color=factor(vs)))+geom_point()+
annotate("text",x=4,y=20,label="Yes")+
labs(title="hello",x="xxx",y="yyy")+
效果如圖
利用ggplot繪制不同形狀的圖形
利用語句ggplot(mtcars,aes(mpg,wt))+geom_point()
可以繪制點(diǎn)圖侄旬,將geom_point
改為geom_line
geom_bar
等語句肺蔚,則可以繪制出不同形狀的圖形,并且不同的圖形可以通過加號疊加起來儡羔。
利用ggplot進(jìn)行分組作圖
若要以一個標(biāo)量為依據(jù)宣羊,進(jìn)行分組作圖,只需要將進(jìn)行分組的變量放進(jìn)語句aes()
中即可汰蜘,如ggplot(mtcars,aes(wt,mpg,color=factor(vs)))+geom_point()
就是將離散型變量vs作為分組依據(jù)進(jìn)行作圖仇冯,并以顏色作為區(qū)分依據(jù)(factor函數(shù)將vs變量轉(zhuǎn)化為因子形式,如果不進(jìn)行轉(zhuǎn)化族操,即使vs是離散型變量苛坚,也會被系統(tǒng)默認(rèn)為連續(xù)型變量)
如果作為分組依據(jù)的變量是連續(xù)型變量比被,則不同組別的圖形就會是漸變式的,如
ggplot(mtcars,aes(wt,mpg,color=qsec))+geom_point()
另外泼舱,還需要強(qiáng)調(diào)一點(diǎn)等缀,如果不打算進(jìn)行分組,只是想指定圖形的顏色娇昙,語句應(yīng)當(dāng)為ggplot(mtcars,aes(wt,mpg))+geom_point(color="blue")
如果此時仍然把color語句放進(jìn)aes中尺迂,
ggplot(mtcars,aes(wt,mpg,color="blue"))+geom_point()
,這時候冒掌,系統(tǒng)會默認(rèn)blue是一個作為分組依據(jù)的變量噪裕,而搜尋沒有發(fā)現(xiàn)這個變量,就會把它當(dāng)做一個普通常量股毫,因此不進(jìn)行分組膳音,圖形顏色就是系統(tǒng)默認(rèn)的紅色利用ggplot繪制分面的圖形
單變量分面
分面實(shí)際上類似于分組作圖,只不過區(qū)分形式不僅僅是顏色不同皇拣,還把橫軸縱軸區(qū)分開來严蓖,如
ggplot(mtcars,aes(mpg,wt))+
geom_point(color="blue")+
#facet_grid(vs~.) #按照y軸切分
facet_grid(.~vs) #按照x軸切分
在上述語句中,vs作為切分變量
雙變量分面
顧名思義氧急,雙變量分面作圖也即是用兩個變量作為切分依據(jù)颗胡,因此把圖形分成了四塊,如
ggplot(mtcars,aes(mpg,wt))+
geom_point(color="blue")+
facet_grid(am~vs)
在上述語句中吩坝,進(jìn)行了雙變量分面毒姨,x軸按照am變量切分,y軸按照vx變量切分钉寝。