您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“怎么用R語(yǔ)言制作柱形圖”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
其實(shí)R語(yǔ)言本身就帶有各種作圖函數(shù),比如plot、bar、pie等,而且語(yǔ)法非常簡(jiǎn)單明了,為什么還要用ggplot2這種語(yǔ)法獨(dú)立性很強(qiáng)、自成體系的作圖包來(lái)作圖呢?
一個(gè)例子就能感受到:
plot(mpg$cty,mpg$hwy)#R語(yǔ)言內(nèi)置散點(diǎn)圖函數(shù)(無(wú)需加載任何輔助工具包)
ggplot(mpg,aes(cty, hwy)) + geom_point(colour="steelblue")+labs(x = "City mpg", y = "Highway") #ggplot2包中的ggplot函數(shù)(需先加載ggplot2工具包支持)
這只是一個(gè)很簡(jiǎn)單的例子,兩個(gè)圖所表達(dá)的是同樣的數(shù)據(jù)變量,同樣的圖表形式,而且在精確度上幾乎毫無(wú)差異。
但是,即便兩種味道同樣的食物,外觀的好壞也會(huì)影響食欲,這兩個(gè)圖表給人的感受,就像是一款諾基亞手機(jī)與一款iPhone手機(jī)給人帶來(lái)的對(duì)比一樣,即便功能差異不大,但是外觀上的藝術(shù)感已經(jīng)將兩者拉開了層次。
這也是為啥我曾經(jīng)剛接觸R語(yǔ)言,還在糊里糊涂的學(xué)各種內(nèi)置圖表函數(shù)時(shí),突然看到大神們?cè)缫延蒙狭薵gplot,立馬選擇入門ggplot的原因。
今天給大家介紹ggplot函數(shù)中柱形圖的用法(一大家子呢,單序列柱形圖、簇狀柱形圖、堆積柱形圖、百分比堆積柱形圖、以及分面柱形圖)。
其實(shí)嚴(yán)格來(lái)講,在R預(yù)言的作圖函數(shù)中,是并不嚴(yán)格區(qū)分柱形圖與條形圖,因?yàn)槎邿o(wú)論是形式上還是功能上都表達(dá)著同樣的數(shù)據(jù)類型和信息。他們有一個(gè)通用的名稱——Barplot。
二者之間的轉(zhuǎn)換往往只需要添加一個(gè)額外的參數(shù)而已。
coord_flip()
今天先介紹柱形圖:
這里就暫且使用ggplot2包中內(nèi)置的數(shù)據(jù)集mpg。
通過head(mpg)函數(shù)可以查看該數(shù)據(jù)集前6條記錄,通過str(mpg)查看數(shù)據(jù)集各變量類型,summary(mpg)可以查看該數(shù)據(jù)集簡(jiǎn)單的統(tǒng)計(jì)匯總結(jié)果。
單序列柱形圖:
ggplot(mpg,aes(class,displ))+geom_bar(stat="identity",fill="steelblue")
以上參數(shù)中,mpg是數(shù)據(jù)集名稱,aes內(nèi)的參數(shù)依次是x值——class(分類變量),y值——displ(連續(xù)變量)。
geom_bar是在ggplot坐標(biāo)系系統(tǒng)之上添加的柱形圖圖層,stat是對(duì)其中的數(shù)值型變量所做的統(tǒng)計(jì)變換(默認(rèn)為count),fill是顏色填充設(shè)定,可以是某一分類變量,也可以直接映射為顏色。
ggplot(mpg,aes(reorder(class,displ),displ)+geom_bar(stat="identity",fill="steelblue")
以上最簡(jiǎn)單的單序列柱形圖,其實(shí)還有非常多的參數(shù)調(diào)整設(shè)定,這里不再一一詳解,感興趣可以參考ggplot2——數(shù)據(jù)分析與圖形藝術(shù)這本該包作者的書。
多系列簇狀柱形圖:
with(mpg,table(class,year))
通過匯總可以看到class與year之間的交叉表關(guān)系,以下將以這兩個(gè)變量來(lái)制作系列簇狀柱形圖。
ggplot(data=mpg,aes(x=class,fill=factor(year)))+geom_bar(position='identity')
因?yàn)閥ear是int型變量,所以在參數(shù)設(shè)定市需要用factor變成因子型。以上圖表是未做任何設(shè)定時(shí)的兩系列柱形圖,可以看到兩個(gè)系列位置重疊無(wú)法看到無(wú)法看清楚1999年的柱形圖實(shí)際高度。
ggplot(data=mpg,aes(x=class,fill=factor(year)))+geom_bar(position='identity',alpha=0.3)
即便是通過alpha參數(shù)來(lái)設(shè)置柱形圖的透明度,也還是很難將1999年與2008年的柱形圖清晰的區(qū)別開。這里我們想要看到的效果是,1999年與2008年的柱形圖互不重疊而是并列放置。需要調(diào)整postion參數(shù)。
ggplot(data=mpg,aes(x=class,fill=factor(year)))+geom_bar(position='dodge')
將position參數(shù)調(diào)整為dodge之后,達(dá)到了我們想要的效果,此時(shí)兩個(gè)序列并列,可以清晰的看到彼此高度。
當(dāng)然我們也可以設(shè)置兩個(gè)序列堆疊。
ggplot(data=mpg,aes(x=class,fill=factor(year)))+geom_bar(position='stack')
通過設(shè)定position參數(shù)為stack,我們可以以堆疊形式處理兩年的指標(biāo),同樣達(dá)到目標(biāo)。
如果我們想要觀察每一個(gè)品類中兩年度所占份額百分比,同樣也可以通過修改position參數(shù)實(shí)現(xiàn)。
ggplot(data=mpg,aes(x=class,fill=factor(year)))+geom_bar(position='fill')
此時(shí)便可以得到各品類兩年數(shù)據(jù)份額占比,仔細(xì)觀察你會(huì)發(fā)現(xiàn),圖例顏色順序與圖表中顏色順序相反,果然到處都是坑啊。
ggplot(data=mpg,aes(x=class,fill=factor(year)))+geom_bar(position='stack')+guides(fill = guide_legend(reverse = TRUE))
ggplot(data=mpg,aes(x=class,fill=factor(year)))+geom_bar(position='fill')+ guides(fill = guide_legend(reverse = TRUE))
通過設(shè)定柱形圖填充順序與圖例顯示順序,使得圖例中的顏色順序與圖表中一致。
最后一種圖表類型是分面組圖:
ggplot(data=mpg,aes(x=class,fill=factor(year)))+geom_bar(position='fill')+facet_grid(. ~ drv)
ggplot(data=mpg,aes(x=class,fill=factor(year)))+geom_bar(position='fill')+facet_grid(drv~.)
除此之外,我們還可以套用現(xiàn)有主題、對(duì)圖表各細(xì)分元素進(jìn)行精修(圖例、坐標(biāo)軸標(biāo)簽、數(shù)據(jù)標(biāo)簽、柱形間距、背景及顏色主題等),這些細(xì)節(jié)有很多的專用參數(shù)進(jìn)行調(diào)整設(shè)置,詳細(xì)內(nèi)容還是最好看看哈德利那本專著,會(huì)理解的比較透徹。
通過設(shè)定分面參數(shù):facet_grid,我們可以將某一分類變量做成每一個(gè)分類項(xiàng)的分面組圖。
但是考慮到大家日常在excel中作圖比較多一點(diǎn)兒,R語(yǔ)言中的作圖方法與excel截然不同:
excel中通過匯總過后的寬數(shù)據(jù)作圖(也是office能夠識(shí)別的唯一格式)
但是R語(yǔ)言秉承的作圖規(guī)則是標(biāo)準(zhǔn)數(shù)據(jù)源(長(zhǎng)數(shù)據(jù),也就是類型數(shù)據(jù)庫(kù)格式的數(shù)據(jù)源)
圖表所支持的數(shù)據(jù)存儲(chǔ)格式的巨大差別往往成為初學(xué)者在R語(yǔ)言圖表面前磕磕碰碰、引起困惑的重大原因。(本人也是初學(xué)者哦~)
所以,想要玩轉(zhuǎn)R語(yǔ)言可視化,必須能夠適應(yīng)長(zhǎng)數(shù)據(jù)這種標(biāo)準(zhǔn)數(shù)據(jù)存儲(chǔ)格式的特點(diǎn)。理解變量類型是如何對(duì)圖表呈現(xiàn)產(chǎn)生的影響。
想要適應(yīng)R語(yǔ)言作圖:個(gè)人覺得有兩條路子可以參考:
1、假設(shè)你已經(jīng)完全沉浸在或者無(wú)法脫離excel的寬數(shù)據(jù)作圖形式,這樣也就意味著你導(dǎo)入的數(shù)據(jù)集往往也是寬數(shù)據(jù)格式。你需要非常熟練的使用R語(yǔ)言中的數(shù)據(jù)重塑輔助工具包:dplyr、tidyr、reshape2等將寬數(shù)據(jù)重塑為R作圖支持的長(zhǎng)數(shù)據(jù)格式。好處是可以循序漸進(jìn)的適應(yīng)R語(yǔ)言作圖數(shù)據(jù)的習(xí)慣,但是需要額外學(xué)很多數(shù)據(jù)重塑工具與函數(shù)。
2、假如你對(duì)于長(zhǎng)數(shù)據(jù)有很好的理解(比如經(jīng)常用統(tǒng)計(jì)分析軟件,大部分都接觸的標(biāo)準(zhǔn)長(zhǎng)數(shù)據(jù),也就是一維表),那么你完全可以直接在excel中將寬數(shù)據(jù)轉(zhuǎn)化為長(zhǎng)數(shù)據(jù)(二維轉(zhuǎn)一維),或者直接將數(shù)據(jù)庫(kù)中的長(zhǎng)數(shù)據(jù)導(dǎo)入R,只需做一些基本的設(shè)定即可,至少不會(huì)在數(shù)據(jù)長(zhǎng)寬格式轉(zhuǎn)換上浪費(fèi)太多時(shí)間和精力。
我比較提倡第二種,因?yàn)?,excel不是標(biāo)準(zhǔn)的可視化軟件(雖說(shuō)功能不可小覷,但是因?yàn)榧骖欀鴶?shù)據(jù)匯總的辦公屬性,所以對(duì)于數(shù)據(jù)存儲(chǔ)的格式?jīng)]有做過多的設(shè)定,靈活性太高,為了適應(yīng)這種情景,微軟的工程師們所開發(fā)的圖表引擎也要使用這種匯總后的二維數(shù)據(jù)表作為作圖數(shù)據(jù),這很明顯,因?yàn)閺臄?shù)據(jù)庫(kù)剛導(dǎo)出的一維表(長(zhǎng)數(shù)據(jù)),很多場(chǎng)合是不適合直接在excel中作圖的)。
而像Eviews、SPSS、Stata以及R、Python等專業(yè)的統(tǒng)計(jì)分析工具甚至Tableau、PowerBI等數(shù)據(jù)可視化軟件,都是默認(rèn)接受長(zhǎng)數(shù)據(jù)作圖的。(在數(shù)據(jù)導(dǎo)入前都會(huì)做變量格式設(shè)定,盡管也會(huì)提供一些長(zhǎng)寬數(shù)據(jù)轉(zhuǎn)換的工具)。
“怎么用R語(yǔ)言制作柱形圖”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(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)容。