R語言ggplot2包之畫長條圖_R

來源:互聯網
上載者:User
引言

ggplot2包的作圖品質毋庸置疑,但是其作圖文法對新手來說還是有點難度,ggplot2:資料分析與圖形藝術這本書也介紹了ggplot2包的基本哲學思想和操作,個人感覺例子還不夠豐富,所以對該包的用法還是停留在半瓶醋的水平。某天,突然發現一本ggplot2包的例子書,大喜,英文版名字為 R Graphics Cookbook,中文版叫做 R資料視覺效果手冊,鑒於高昂的價格,我決定硬著頭皮翻下英文版,順便做點筆記,供自己或者各位朋友參考,英文水平不高,如有錯誤,莫怪。 基本操作

首先,我想介紹的是用ggplot2畫長條圖,基本用法如下:

install.packages('gcookbook')#R資料視覺效果手冊書中的資料集library(ggplot2)library(gcookbook) ggplot(pg_mean, aes(x=group, y=weight)) + geom_bar(stat="identity")


ggplot()函數產生圖層,aes()指定x和y軸變數,x一般為名義變數;geom_bar產生長條圖圖層。

如果x為連續變數或者數值變數,長條圖會有點不同。如果是連續變數,長條圖的橫座標會取連續變數最大值與最小值之間每一個數值;如果是數值變數,你得把數值變數轉化成因子,例子見代碼。

BOD#BBD資料集 Time變數不包含6這個數值Time demand1 8.32 10.33 19.04 16.05 15.67 19.8ggplot(BOD, aes(x=Time, y=demand)) + geom_bar(stat="identity")#直接賦值,不做因子轉化ggplot(BOD, aes(x=factor(Time), y=demand)) + geom_bar(stat="identity")#變數進行因子轉化



直接把連續變數賦值給x和數值轉為因子後給x的差異從圖中就能很清楚的看出來。 調整顏色

長條圖預設為黑灰色填充,我們可以對填充顏色和長條圖邊框顏色進行修改。

ggplot(pg_mean, aes(x=group, y=weight)) +geom_bar(stat="identity", fill="lightblue", colour="black")

分組長條圖

有時候我們想對同一資料中的兩類不同對象進行比較,我們可以使用分組長條圖。我們使用cabbage_exp資料集,該資料集包含兩類不同資料

cabbage_exp#資料集Cultivar Date Weightc39 d16 3.18c39 d20 2.80c39 d21 2.74c52 d16 2.26c52 d20 3.11c52 d21 1.47ggplot(cabbage_exp,aes(x=Date, y=Weight, fill=Cultivar))+geom_bar(stat='identity',position="dodge")#identity意味著把y當做值去輸入,如果改成bin,就會計算y出現的頻數。dodge意味是各組是左右分布而不是上下重疊ggplot(cabbage_exp,aes(x=Date, y=Weight, fill=Cultivar))+geom_bar(stat='identity')


製作頻數長條圖

頻數長條圖不需要指定變數y,而是根據變數x出現的頻數自動產生。

ggplot(diamonds, aes(x=cut)) + geom_bar(stat="bin")#stat="bin"可有可無,該參數是預設的

給正值和負值長條圖賦予不同顏色

csub <- subset(climate, Source=="Berkeley" & Year >= 1900)csub$pos <- csub$Anomaly10y >= 0 #pos變數是個布爾變數,值為T or Fggplot(csub, aes(x=Year, y=Anomaly10y, fill=pos)) +geom_bar(stat="identity", position="identity")#position="identity"是為了關閉負值長條圖沒有定義的警告

調整長條圖柱子大小及寬度

長條圖寬度調整用width函數,預設值為0.9。我們可以通過修改該值,使柱子變得更寬or更窄。

ggplot(pg_mean, aes(x=group, y=weight)) + geom_bar(stat="identity", width=0.5)#窄柱子ggplot(pg_mean, aes(x=group, y=weight)) + geom_bar(stat="identity", width=0.5)#寬柱子



還有在分組長條圖中,各組柱子之間是沒有空隙的,如果要改變柱子之間距離,我們需要設定position=po
sition_dodge()。

ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) +geom_bar(stat="identity", width=0.5, position=position_dodge(0.6))#值越大越離得遠

圖中增加資料

可以用geom_text()給長條圖中增加圖注或資料,通過設定vjust可以使資料顯示在柱子上或立面。

ggplot(cabbage_exp,aes(x=interaction(Date, Cultivar),y=Weight))+geom_bar(stat="identity")+geom_text(aes(label=Weight), vjust=-0.2)#顯示在上面ggplot(cabbage_exp,aes(x=interaction(Date,Cultivar),y=Weight))+geom_bar(stat="identity") +geom_text(aes(label=Weight),vjust=1.5,colour="white")#顯示在裡面



暫時先介紹些基礎,需要更多進階主題或例子,可以參考R資料視覺效果手冊,或者多用help().

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.