您好,登錄后才能下訂單哦!
這篇文章主要介紹“R語(yǔ)言的ggplot2知識(shí)點(diǎn)有哪些”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“R語(yǔ)言的ggplot2知識(shí)點(diǎn)有哪些”文章能幫助大家解決問(wèn)題。
1 數(shù)據(jù)(Data)和映射(Mapping)
下面以一份鉆石的數(shù)據(jù)為例,這份數(shù)據(jù)非常大,隨機(jī)取一個(gè)子集來(lái)畫(huà)圖。
require(ggplot2)
data(diamonds)
##設(shè)置種子,可重復(fù)(數(shù)字隨意)
set.seed(42)
small <- diamonds[sample(nrow(diamonds), 1000), ]
##查看數(shù)據(jù)情況
head(small)
summary(small)
#畫(huà)圖實(shí)際上是把數(shù)據(jù)中的變量映射到圖形屬性上。以克拉(carat)數(shù)為X軸變量,價(jià)格(price)為Y軸變量。
p <- ggplot(data = small, mapping = aes(x = carat, y = price))
##上面這行代碼把數(shù)據(jù)映射XY坐標(biāo)軸上,需要告訴ggplot2,這些數(shù)據(jù)要映射成什么樣的幾何對(duì)象,下面以散點(diǎn)為例:
p + geom_point()
#如果想將切工(cut)映射到形狀屬性。(cut為數(shù)據(jù)集中的一個(gè)分類(lèi)性狀):
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、幾何對(duì)象(Geometric)
#在上面的例子中,各種屬性映射由ggplot函數(shù)執(zhí)行,只需要加一個(gè)圖層,使用geom_point()告訴ggplot要畫(huà)散點(diǎn),于是所有的屬性都映射到散點(diǎn)上。
#geom_point()完成的就是幾何對(duì)象的映射,ggplot2提供了各種幾何對(duì)象映射,如geom_histogram用于直方圖,geom_bar用于畫(huà)柱狀圖,geom_boxplot用于畫(huà)箱式圖等等。
#不同的幾何對(duì)象,要求的屬性會(huì)有些不同,這些屬性也可以在幾何對(duì)象映射時(shí)提供,比如上一圖,也可以用以下語(yǔ)法來(lái)畫(huà):
p <- ggplot(small)
p+geom_point(aes(x=carat, y=price, shape=cut, colour=color))
###重要:ggplot2支持圖層,我通常把不同的圖層中共用的映射提供給ggplot函數(shù),而某一幾何對(duì)象才需要的映射參數(shù)提供給geom_xxx函數(shù)。
直方圖
#直方圖最容易,提供一個(gè)x變量,畫(huà)出數(shù)據(jù)的分布。
ggplot(small)+geom_histogram(aes(x=price))
#同樣可以根據(jù)另外的變量給它填充顏色,比如按不同的切工:
ggplot(small)+geom_histogram(aes(x=price, fill=cut))
#可以將其分開(kāi),side-by-side地畫(huà)直方圖。
ggplot(small)+geom_histogram(aes(x=price, fill=cut), position="dodge")
#還可以使用position="fill",按照相對(duì)比例來(lái)畫(huà)。
ggplot(small)+geom_histogram(aes(x=price, fill=cut), position="fill")
柱狀圖
#柱狀圖非常適合于畫(huà)分類(lèi)變量。在這里以透明度(clarity)變量為例。按照不同透明度的鉆石的數(shù)目畫(huà)柱狀圖。
ggplot(small)+geom_bar(aes(x=clarity))
#柱狀圖兩個(gè)要素,一個(gè)是分類(lèi)變量,一個(gè)是數(shù)目,也就是柱子的高度。數(shù)目在這里不用提供,因?yàn)間gplot2會(huì)通過(guò)x變量計(jì)算各個(gè)分類(lèi)的數(shù)目。
#當(dāng)然你想提供也是可以的,通過(guò)stat參數(shù),可以讓geom_bar按指定高度畫(huà)圖,比如以下代碼:
ggplot()+geom_bar(aes(x=c(LETTERS[1:3]),y=1:3), stat="identity")
#柱狀圖和直方圖是很像的,直方圖把連續(xù)型的數(shù)據(jù)按照一個(gè)個(gè)等長(zhǎng)的分區(qū)(bin)來(lái)切分,然后計(jì)數(shù),畫(huà)柱狀圖。而柱狀圖是分類(lèi)數(shù)據(jù),按類(lèi)別計(jì)數(shù)。我們可以用前面直方圖的參數(shù)來(lái)畫(huà)side-by-side的柱狀圖,填充顏色或者按比例畫(huà)圖,它們是高度一致的。
#柱狀圖是用來(lái)表示計(jì)數(shù)數(shù)據(jù)的,但在生物界卻被經(jīng)常拿來(lái)表示均值,加上誤差來(lái)表示數(shù)據(jù)分布,這可以通常圖層來(lái)實(shí)現(xiàn),我將在圖層一節(jié)中給出實(shí)例。
密度函數(shù)圖
#說(shuō)到直方圖,就不得不說(shuō)密度函數(shù)圖,數(shù)據(jù)和映射和直方圖是一樣的,唯一不同的是幾何對(duì)象,geom_histogram告訴ggplot要畫(huà)直方圖,而geom_density則說(shuō)我們要畫(huà)密度函數(shù)圖,在我們熟悉前面語(yǔ)法的情況下,很容易畫(huà)出:
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ù)圖是表示數(shù)據(jù)分布的好方法,而在數(shù)據(jù)量較少的時(shí)候,比如很多的生物實(shí)驗(yàn),很多時(shí)候大家都是使用柱狀圖+errorbar的形式來(lái)表示,不過(guò)這種方法的信息量非常低,被Nature Methods吐槽,這種情況推薦使用boxplot。
ggplot(small)+geom_boxplot(aes(x=cut, y=price,fill=color))
#geom_boxplot將數(shù)據(jù)映射到箱式圖上,上面的代碼,我們應(yīng)該很熟悉了,按切工(cut)分類(lèi),對(duì)價(jià)格(price)變量畫(huà)箱式圖,再分開(kāi)按照color變量填充顏色。
ggplot2提供了很多的geom_xxx函數(shù),可以滿(mǎn)足我們對(duì)各種圖形繪制的需求。
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語(yǔ)言的ggplot2知識(shí)點(diǎn)有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。