這篇文章主要介紹“R語言的ggplot2知識點(diǎn)有哪些”的相關(guān)知識,小編通過實(shí)際案例向大家展示操作過程,操作方法簡單快捷,實(shí)用性強(qiáng),希望這篇“R語言的ggplot2知識點(diǎn)有哪些”文章能幫助大家解決問題。
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)河北免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了成百上千企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
1 數(shù)據(jù)(Data)和映射(Mapping)
下面以一份鉆石的數(shù)據(jù)為例,這份數(shù)據(jù)非常大,隨機(jī)取一個子集來畫圖。
require(ggplot2)
data(diamonds)
##設(shè)置種子,可重復(fù)(數(shù)字隨意)
set.seed(42)
small <- diamonds[sample(nrow(diamonds), 1000), ]
##查看數(shù)據(jù)情況
head(small)
summary(small)
#畫圖實(shí)際上是把數(shù)據(jù)中的變量映射到圖形屬性上。以克拉(carat)數(shù)為X軸變量,價格(price)為Y軸變量。
p <- ggplot(data = small, mapping = aes(x = carat, y = price))
##上面這行代碼把數(shù)據(jù)映射XY坐標(biāo)軸上,需要告訴ggplot2,這些數(shù)據(jù)要映射成什么樣的幾何對象,下面以散點(diǎn)為例:
p + geom_point()
#如果想將切工(cut)映射到形狀屬性。(cut為數(shù)據(jù)集中的一個分類性狀):
p <- ggplot(data=small, mapping=aes(x=carat, y=price, shape=cut))
p+geom_point()
#再比如我想將鉆石的顏色(color)映射顏色屬性:
p <- ggplot(data=small, mapping=aes(x=carat, y=price, shape=cut, colour=color))
p+geom_point()
3、幾何對象(Geometric)
#在上面的例子中,各種屬性映射由ggplot函數(shù)執(zhí)行,只需要加一個圖層,使用geom_point()告訴ggplot要畫散點(diǎn),于是所有的屬性都映射到散點(diǎn)上。
#geom_point()完成的就是幾何對象的映射,ggplot2提供了各種幾何對象映射,如geom_histogram用于直方圖,geom_bar用于畫柱狀圖,geom_boxplot用于畫箱式圖等等。
#不同的幾何對象,要求的屬性會有些不同,這些屬性也可以在幾何對象映射時提供,比如上一圖,也可以用以下語法來畫:
p <- ggplot(small)
p+geom_point(aes(x=carat, y=price, shape=cut, colour=color))
###重要:ggplot2支持圖層,我通常把不同的圖層中共用的映射提供給ggplot函數(shù),而某一幾何對象才需要的映射參數(shù)提供給geom_xxx函數(shù)。
直方圖
#直方圖最容易,提供一個x變量,畫出數(shù)據(jù)的分布。
ggplot(small)+geom_histogram(aes(x=price))
#同樣可以根據(jù)另外的變量給它填充顏色,比如按不同的切工:
ggplot(small)+geom_histogram(aes(x=price, fill=cut))
#可以將其分開,side-by-side地畫直方圖。
ggplot(small)+geom_histogram(aes(x=price, fill=cut), position="dodge")
#還可以使用position="fill",按照相對比例來畫。
ggplot(small)+geom_histogram(aes(x=price, fill=cut), position="fill")
柱狀圖
#柱狀圖非常適合于畫分類變量。在這里以透明度(clarity)變量為例。按照不同透明度的鉆石的數(shù)目畫柱狀圖。
ggplot(small)+geom_bar(aes(x=clarity))
#柱狀圖兩個要素,一個是分類變量,一個是數(shù)目,也就是柱子的高度。數(shù)目在這里不用提供,因?yàn)間gplot2會通過x變量計(jì)算各個分類的數(shù)目。
#當(dāng)然你想提供也是可以的,通過stat參數(shù),可以讓geom_bar按指定高度畫圖,比如以下代碼:
ggplot()+geom_bar(aes(x=c(LETTERS[1:3]),y=1:3), stat="identity")
#柱狀圖和直方圖是很像的,直方圖把連續(xù)型的數(shù)據(jù)按照一個個等長的分區(qū)(bin)來切分,然后計(jì)數(shù),畫柱狀圖。而柱狀圖是分類數(shù)據(jù),按類別計(jì)數(shù)。我們可以用前面直方圖的參數(shù)來畫side-by-side的柱狀圖,填充顏色或者按比例畫圖,它們是高度一致的。
#柱狀圖是用來表示計(jì)數(shù)數(shù)據(jù)的,但在生物界卻被經(jīng)常拿來表示均值,加上誤差來表示數(shù)據(jù)分布,這可以通常圖層來實(shí)現(xiàn),我將在圖層一節(jié)中給出實(shí)例。
密度函數(shù)圖
#說到直方圖,就不得不說密度函數(shù)圖,數(shù)據(jù)和映射和直方圖是一樣的,唯一不同的是幾何對象,geom_histogram告訴ggplot要畫直方圖,而geom_density則說我們要畫密度函數(shù)圖,在我們熟悉前面語法的情況下,很容易畫出:
ggplot(small)+geom_density(aes(x=price, colour=cut))
ggplot(small)+geom_density(aes(x=price,fill=clarity))
#####colour參數(shù)指定的是曲線的顏色,而fill是往曲線下面填充顏色。
箱式圖
#數(shù)據(jù)量比較大的時候,用直方圖和密度函數(shù)圖是表示數(shù)據(jù)分布的好方法,而在數(shù)據(jù)量較少的時候,比如很多的生物實(shí)驗(yàn),很多時候大家都是使用柱狀圖+errorbar的形式來表示,不過這種方法的信息量非常低,被Nature Methods吐槽,這種情況推薦使用boxplot。
ggplot(small)+geom_boxplot(aes(x=cut, y=price,fill=color))
#geom_boxplot將數(shù)據(jù)映射到箱式圖上,上面的代碼,我們應(yīng)該很熟悉了,按切工(cut)分類,對價格(price)變量畫箱式圖,再分開按照color變量填充顏色。
ggplot2提供了很多的geom_xxx函數(shù),可以滿足我們對各種圖形繪制的需求。
geom_abline geom_area
geom_bar geom_bin2d
geom_blank geom_boxplot
geom_contour geom_crossbar
geom_density geom_density2d
geom_dotplot geom_errorbar
geom_errorbarh geom_freqpoly
geom_hex geom_histogram
geom_hline geom_jitter
geom_line geom_linerange
geom_map geom_path
geom_point geom_pointrange
geom_polygon geom_quantile
geom_raster geom_rect
geom_ribbon geom_rug
geom_segment geom_smooth
geom_step geom_text
geom_tile geom_violin
geom_vline
關(guān)于“R語言的ggplot2知識點(diǎn)有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點(diǎn)。