vlambda博客
学习文章列表

R语言-单数据柱形图

包:ggplot2

单数据柱形图一般为一个样本X对应一个观测值value,以下列数据(df)为例,每个处理T对应一个浓度C,比较不同处理下的浓度:


1

ggplot(df, aes(T, C))+

   geom_bar(stat="identity")

此时df中的T列为类别型变量,这种情况下的X轴向自变量的顺序默根据字母顺序排列,如图1。但是我们常常需要X按照给定顺序排列,因此需要用factor()X转变为因子型,再进行绘图,如图2

2

df$T=factor(df$T,levels=c("CK","BC","ZE","CO1","CO2","CO3"))

ggplot(df,aes(T,C))+

  geom_bar(stat="identity",width =0.7)

##factor()T转换为因子,参数levels用于手动对因子进行排序。

还有一种情况是要X的顺序遵循value值递增或递减的顺序排列,此时需要先对因子向量T根据C值进行排序,定义X变量顺序,再进行绘图,如图3

3

order=sort(df$C, index.return = TRUE, decreasing = TRUE)

df$T=factor( df$T , levels = df$T [order$ix])

ggplot(df,aes(T,C))+

  geom_bar(stat="identity",width =0.7)

##利用sort()C列进行排序,decreasing参数用于控制递增或者递减;factor()T转化为因子,顺序根据C值的的排序结果。


补充一下,对于一些顺序型号变量X,例如采样点1-10 (此处使用的数据为md)。此时对X列有两种选择,一种是作为numeric,另一种是作为characterX列作为numeric时,X轴刻度可能会被省略(1-10只被标出2.5,5, 7.5, 10),如图4此时需要调整刻度,即添加函数scale_x_continuous(), 则会得到X轴刻度为1-10的图5


4

ggplot(md,aes(x=sample,y=RI,fill=Metal))+

  geom_bar(stat="identity",position="stack",width=0.7,fill="grey")+

  scale_x_continuous (breaks=c(1,2,3,4,5,6,7,8,9,10))

##scale_x_continuous () 函数用于修改X轴刻度

另一种情况则是X列作为character时,默认会根据字母顺序排列,因此X轴顺序为1,10,2,3……,如图6。针对这种情况,处理方法同例2,将X列转换为因子。