R畫條形圖方法---barplot函數(shù)及ggplot2包
1. barplot函數(shù)
> a=matrix(1:18,2)
> a
? ? ?[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,]? ? 1? ? 3? ? 5? ? 7? ? 9? ?11? ?13? ?15? ?17
[2,]? ? 2? ? 4? ? 6? ? 8? ?10? ?12? ?14? ?16? ?18
> class(a) #查看a數(shù)據(jù)類型
[1] "matrix"
注意barplot函數(shù)對象要么是向量肪获,要么是矩陣,若不是狈蚤,則要進行數(shù)據(jù)數(shù)據(jù)類型進行轉(zhuǎn)換
> barplot(d)? #所有參數(shù)默認(rèn)
> ?barplot
常見參數(shù)就不贅述了猴抹,幾個個人認(rèn)為比較重要參數(shù)如下
names.arg----在每個條形圖或條形圖下繪制的名稱向量贬堵。 如果省略此參數(shù),那么如果它是向量结洼,則從height的names屬性中獲取名稱黎做;如果它是矩陣,則從列名稱中獲取名稱松忍。
legend.text----數(shù)據(jù)為矩陣的時候用引几,如果legend.text為true,則height的行名稱非空時將用作標(biāo)簽挽铁。
horiz----默認(rèn)false伟桅,為豎直條形圖,改為TRUE叽掘,為水平條形圖
beside---如果為FALSE楣铁,則將高度列描繪為堆疊的條,如果為TRUE更扁,則將列描繪為并列的條
space---每根柱子之前留出的空間量(以平均柱子寬度的一部分為單位)盖腕。 可以以單個數(shù)字或每個小節(jié)一個數(shù)字的形式給出。 如果height是一個矩陣浓镜,并且next為TRUE溃列,則可以用兩個數(shù)字指定空間,其中第一個是同一組中的條形之間的間隔膛薛,第二個是組之間的間隔听隐。 如果未明確給出,則如果height為矩陣哄啄,并且next為TRUE雅任,則默認(rèn)為c(0,1),否則為0.2咨跌。
還有很多參數(shù)可以通過help()查詢
> barplot(a,names.arg = c('1','2','3','4','5','6','7','8','9'),beside = TRUE,horiz = TRUE,col = rep(c('blue','green','gray'),3),legend.text = TRUE)
> barplot(a,names.arg = c('1','2','3','4','5','6','7','8','9'),beside = F,horiz = TRUE,col = rep(c('blue','green'),2),legend.text = TRUE)
> barplot(a,names.arg = c('1','2','3','4','5','6','7','8','9'),beside = F,horiz = F,col = rep(c('blue','green'),2),legend.text = TRUE)?
2.ggplot2包
安裝加載包
install.package('ggplot2')
library(ggplot2)
#創(chuàng)建矩陣
data<-data.frame(Sample<-c(rep('control1',3),rep('control2',3),rep('control3',3),rep('treat1',3),rep('treat2',3),rep('treat3',3),rep('treat4',3)), contion<-rep(c('Cell','Tissue','Organ'),7), value<-c(503,264,148,299,268,98,363,289,208,108,424,353,1,495,168,152,367,146,48,596,143))
colnames(data)=c('sample',"contion","value")
ggplot(data,mapping = aes(Sample,value,fill=contion))+geom_bar(stat='identity',position='fill') +labs(x = 'Sample',y = 'frequnency') +theme(axis.title =element_text(size = 16),axis.text =element_text(size = 14, color = 'black'))+theme(axis.text.x = element_text(angle = 45, hjust = 1))
#ggplot函數(shù)沪么,geom從數(shù)據(jù)到幾何圖像,geom_bar為柱狀圖锌半,geom_line為線型圖等禽车,aes形成映射,x軸為sample刊殉,y軸為value殉摔,堆疊為contion,geom_bar()函數(shù)為建立柱狀圖冗澈,stat參數(shù)-統(tǒng)計變換钦勘,position參數(shù)為柱狀圖形式,position= 'fill'(圖形元素堆疊且高度標(biāo)準(zhǔn)化為1)亚亲,position= 'stack'(圖形堆疊圖)彻采,參數(shù)position= 'dodge'(并列數(shù)據(jù)腐缤,非堆疊展示),coord畫圖在某個坐標(biāo)系中肛响,facet將繪圖窗口分成若干子窗口用來生成數(shù)據(jù)中不同子集的圖形
# labs為標(biāo)題岭粤,theme為設(shè)置標(biāo)題參數(shù),axis.title為軸標(biāo)題信息特笋,axis.text為軸注釋文本剃浇,axis.text.x表示設(shè)置x軸的信息,還有更多參數(shù)詳查ggplot2包
ggplot(data,mapping = aes(Sample,value,fill=contion))+geom_bar(stat='identity',position='fill') +labs(x = 'Sample',y = 'frequnency') +theme(axis.title =element_text(size = 16),axis.text =element_text(size = 14, color = 'black'))+theme(axis.text.x = element_text(angle = 45, hjust = 1))+coord_flip() #加的函數(shù)可實現(xiàn)水平柱狀圖展示
ggplot(data,mapping = aes(Sample,value,fill=contion))+geom_bar(stat='identity',position='stack') +labs(x = 'Sample',y = 'frequnency') +theme(axis.title =element_text(size = 16),axis.text =element_text(size = 14, color = 'black'))+theme(axis.text.x = element_text(angle = 45, hjust = 1))
ggplot(data,mapping = aes(Sample,value,fill=contion))+geom_bar(stat='identity',position='dodge') +labs(x = 'Sample',y = 'frequnency') +theme(axis.title =element_text(size = 16),axis.text =element_text(size = 14, color = 'black'))+theme(axis.text.x = element_text(angle = 45, hjust = 1))