溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

R語(yǔ)言的ggplot2知識(shí)點(diǎn)有哪些

發(fā)布時(shí)間:2022-03-25 15:48:40 來(lái)源:億速云 閱讀:202 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要介紹“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)。

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI