R語(yǔ)言利用barplot()制作條形圖的各種實(shí)例
前言
函數(shù)barplot()可以繪制條形圖,其格式為
barplot(height)
height是一個(gè)向量或者矩陣,使用horiz=TRUE可以生成一個(gè)水平的條形圖,
例子
1,用條形圖統(tǒng)計(jì)分類(lèi)變量的頻數(shù)
注意條形圖常用來(lái)統(tǒng)計(jì)分類(lèi)變量每一鐘元素的頻數(shù),此時(shí)可以運(yùn)用table()進(jìn)行處理分類(lèi)變量,其可以統(tǒng)計(jì)分類(lèi)變量的各個(gè)元素的頻次。處理后的結(jié)果為table格式而barplot()可以識(shí)別table格式
table()函數(shù)可以統(tǒng)計(jì)列各種元素出現(xiàn)的次數(shù)
counts <- table(Arthritis$Improved) counts barplot(counts,xlab = "Improvement",ylab = "Frequency",main = "Simple Bar Ploy")
例子2
生成水平的條形圖
barplot()參數(shù)horiz可以指定圖形是否為水平的條形圖
注意生成的水平的條形圖時(shí),x,y軸的名稱(chēng)不會(huì)跟著變換所以x,y軸的名稱(chēng)應(yīng)同時(shí)跟著變換
barplot(counts,horiz = TRUE ,ylab = "Improvement",xlab = "Frequency",main = "Simple Bar Ploy")
例子3,使用plot()函數(shù)繪制條形圖
如果像上面的例子那樣,繪制的類(lèi)別型變量是一個(gè)因子或有序因子,可以直接使用plot()函數(shù)快速創(chuàng)建條形圖,這樣就不用再通過(guò)table()函數(shù)進(jìn)行處理變量。圖片效果與例子1相同
plot(Arthritis$Improved,xlab = "Improvement",ylab = "Frequency",main = "Simple Bar Ploy") #繪制水平的條形圖 plot(Arthritis$Improved,horiz=TRUE,xlab = "Improvement",ylab = "Frequency",main = "Simple Bar Ploy")
例子3繪制堆砌條形圖和分組條形圖
如果height是一個(gè)矩陣而不是一個(gè)向量,則繪制結(jié)果將是一幅堆砌條形圖或分組條形圖
當(dāng)beside=FALSE(默認(rèn)值),則生成堆砌條形圖–矩陣的每一列都將生成一個(gè)條形
當(dāng)beside=TRUE,則生成分組條形圖–矩陣中的每一列都表示一個(gè)分組,各列的中值將并列而不是堆砌
注意barplot()中的height要么是向量要么是矩陣,不能是data.frame但是可以是table格式
opar <- par(no.readonly = TRUE) par(opar) par(mfrow=c(1,2)) counts <- table(Arthritis$Improved,Arthritis$Treatment) counts #繪制堆砌條形圖 barplot(counts,main = "Stacked Bar Plot",xlab = "Treatment",ylab="Frequency", col = c("red","yellow","green"),legend=row.names(counts)) #繪制分組條形圖 barplot(counts,beside = TRUE,main = "Stacked Bar Plot",xlab = "Treatment",ylab="Frequency", col = c("red","yellow","green"),legend=row.names(counts))
例子4
使用數(shù)據(jù)整合函數(shù) aggregate()并將結(jié)果傳遞給barplot()函數(shù),來(lái)創(chuàng)建表示均值,中位數(shù),標(biāo)準(zhǔn)值等條形圖
能夠如此作圖的原因是因?yàn)槲覀兛梢韵蜃鲌D函數(shù)barplot()只傳遞一個(gè)數(shù)值向量,再通過(guò)參數(shù)names.arg指定橫坐標(biāo)的標(biāo)簽,(arg為英文自變量的含義)
這樣我們我們輸入各個(gè)分組后各組的平均值的值向量、在通過(guò)參數(shù)names.arg指定各組名稱(chēng)為橫坐標(biāo)標(biāo)簽就可以制作成一個(gè)條形圖了
#使用數(shù)據(jù)整合函數(shù)aggregate()并將結(jié)果傳遞給barplot()函數(shù),來(lái)創(chuàng)建表示均值,中位數(shù),標(biāo)準(zhǔn)差等條形圖 #生成要作圖的數(shù)據(jù)框 states <- data.frame(state.region,state.x77) #根據(jù)列state.region對(duì)列states$Illiteracy進(jìn)行分組并求每組的均值。 #by = list(state.region)指定分組變量 #states$Illiteracy為被分組的變量 #FUN=mean是指定處理被分組的變量的函數(shù) means <- aggregate(states$Illiteracy,by = list(state.region),FUN=mean) #設(shè)定數(shù)值只能保留2位小數(shù) options(digits = 2) #barplot()函數(shù)可以輸入沒(méi)有索引的向量,但是這個(gè)時(shí)候就沒(méi)有橫坐標(biāo)的標(biāo)簽, #這時(shí)就需要通過(guò)names.arg參數(shù)指定(arg為自變量的意思) par(opar) barplot(means$x,names.arg = means$Group.1) title("Mean Illiteracy Rate")
例子5,條形圖的微調(diào)
cex.names參數(shù)調(diào)整字號(hào)
names.arg指定字符向量作為條形的標(biāo)簽圖
las可以調(diào)整標(biāo)簽的參數(shù),las=2為水平方向,las=0為垂直方向
par(mar=c(5,8,4,2)) #las調(diào)整標(biāo)簽的參數(shù),2為水平,0為垂直 par(las=2) library(vcd) counts <- table(Arthritis$Improved) barplot(counts, main = "Treatment Outcome", horiz = TRUE, #調(diào)整標(biāo)簽字體大小 cex.names = 0.8, #修改標(biāo)簽文本 names.arg = c("No Improvement","Some Improvement","Marked Improvement"))
例子6,棘狀圖
棘狀圖–棘狀圖對(duì)堆砌條形圖進(jìn)行了重縮放,這樣讓每列生成的條形圖的高度均為1,換句話(huà)說(shuō)它把每一列的數(shù)值替換為此數(shù)值在這一列數(shù)值總和的占比。
棘狀圖可以由vcd包中的函數(shù)spine()繪制
library(vcd) attach(Arthritis) counts <- table(Treatment,Improved) spine(counts,main="Spinogram Example")
結(jié)束總結(jié)
能夠制作條形圖的函數(shù)有三個(gè)分別是barplot()函數(shù),plot()函數(shù)和vcd包中的spine()函數(shù)
plot()函數(shù)可以直接輸入分類(lèi)變量,不用再通過(guò)table()處理分類(lèi)變量把它變成含有分類(lèi)變量各個(gè)元素頻數(shù)的表格。
spine()函數(shù)可以生成棘狀圖
條形圖可以繪制成水平的,但是此時(shí)應(yīng)注意修改x軸坐標(biāo)的名稱(chēng)
當(dāng)需要繪制條形圖的是一個(gè)數(shù)據(jù)框時(shí)此時(shí)會(huì)生成堆砌或者分組的條形圖。生成什么樣的條形圖由參數(shù)beside決定,當(dāng)beside=FALSE時(shí)生成堆砌的條形圖(每一列的數(shù)值將堆砌在一個(gè)條形上),否則生成分組的條形圖
當(dāng)函數(shù)barplot()的參數(shù)height是一個(gè)數(shù)值向量時(shí)(只有數(shù)值不附帶索引),此時(shí)可以通過(guò)names.arg參數(shù)指定x軸刻度的標(biāo)簽
到此這篇關(guān)于R語(yǔ)言利用barplot()制作條形圖的文章就介紹到這了,更多相關(guān)R語(yǔ)言barplot()條形圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
R語(yǔ)言符號(hào)知識(shí)點(diǎn)匯總
在本篇文章里小編給大家整理的是一篇關(guān)于R語(yǔ)言符號(hào)知識(shí)點(diǎn)匯總內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。2021-03-03R語(yǔ)言學(xué)習(xí)Rcpp基礎(chǔ)知識(shí)全面整理
這篇文章主要介紹了R語(yǔ)言學(xué)習(xí)Rcpp知識(shí)的全面整理,包括相關(guān)配置說(shuō)明,常用數(shù)據(jù)類(lèi)型及建立等基礎(chǔ)知識(shí)的全面詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11R語(yǔ)言數(shù)據(jù)可視化繪制Circular?bar?plot實(shí)現(xiàn)環(huán)形柱狀圖
這篇文章主要為大家介紹了R語(yǔ)言繪制Circular?bar?plot實(shí)現(xiàn)環(huán)形柱狀圖的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02R語(yǔ)言關(guān)于協(xié)方差分析實(shí)例分析
在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于R語(yǔ)言關(guān)于協(xié)方差分析實(shí)例分析內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-05-05R語(yǔ)言中assign函數(shù)和get函數(shù)的用法
這篇文章主要介紹了R語(yǔ)言中assign函數(shù)和get函數(shù)的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04R語(yǔ)言?xún)山M變量特征相關(guān)關(guān)系熱圖繪制畫(huà)法
本文為大家介紹了如何畫(huà)兩組變量(特征)的相關(guān)關(guān)系熱圖的方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02R語(yǔ)言數(shù)據(jù)可視化ggplot添加左右y軸繪制天貓雙十一銷(xiāo)售圖
本篇文章主要介紹如何在R中,使用ggplot2包在一個(gè)圖像上添加左右兩個(gè) y 軸刻度,并在同一個(gè)圖像上繪制兩個(gè)完全不一樣的統(tǒng)計(jì)圖,有需要的朋友可以借鑒參考下2021-11-11R語(yǔ)言 解決安裝ggplot2報(bào)錯(cuò)的問(wèn)題
這篇文章主要介紹了R語(yǔ)言 解決安裝ggplot2報(bào)錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04