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,另一种是作为character。X列作为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列转换为因子。