查看原文
其他

R可视化——绘图过程中X轴及Y轴样本展示顺序的指定

王志山 科研后花园 2023-09-08

在使用R语言进行数据可视化过程中,大家可能会遇到数据中样本名称顺序与图形中样本展示顺序不一致的问题,或者是我们想要让图形中的样本顺序按照我们指定的进行绘制。今天,小编就给大家用实例进行讲解如何解决如上问题!

R包的安装及加载

rm(list=ls())#clear Global Environmentsetwd('D:\\桌面\\绘图技巧')#设置工作路径
#安装包# install.packages("ggplot2")# install.packages("ggprism")# install.packages("reshape2")# install.packages("cowplot")#加载R包library(ggplot2)library(ggprism)library (reshape2)library(cowplot)

数据加载及预处理

#使用R代码生成一些数据df <- data.frame( A=c(0.5,0.3,0.1,0.05,0.05), B=c(0.1,0.2,0.6,0.01,0.09), C=c(0.1,0.5,0.2,0.1,0.1), D=c(0.05,0.25,0.3,0.3,0.1), E=c(0.2,0.15,0.4,0.2,0.05))
df$tax=rownames(df)#将行名加入到数据中
#变量格式转换,宽数据转化为长数据,方便后续作图df1 <- melt(df)names(df1)[c(2,3)] <- c("group","values") #修改列名head(df1)#预览数据

常规绘图

p1<-ggplot(df1, aes( x = group,y=100 * values,fill = tax))+#geom_col和geom_bar这两条命令都可以绘制堆叠柱形图 geom_col(position = 'stack', width = 0.6)+#geom_bar(position = "stack", stat = "identity", width = 0.6) scale_y_continuous(expand = c(0,0))+# 调整y轴属性,使柱子与X轴坐标接触 labs(x="Group",y="Relative Abundance(%)",#设置X轴和Y轴的名称以及添加标题 fill="tax")+ guides(fill=guide_legend(keywidth = 1, keyheight = 1)) +#修改图例的框大小 theme_prism(palette = "candy_bright", base_fontface = "plain", # 字体样式,可选 bold, plain, italic base_family = "serif", # 字体格式,可选 serif, sans, mono, Arial等 base_size = 16, # 图形的字体大小 base_line_size = 0.8, # 坐标轴的粗细 axis_text_angle = 45)+ # 可选值有 0,45,90,270 scale_fill_prism(palette = "colors")#使用ggprism包修改颜色p1

调整X轴样本展示顺序

####按照自己的意愿修改x轴显示的顺序#将样本名构造为factor类型数据并指定顺序df1$group <- factor(df1$group,levels = c('B','A','C','E','D'))#绘图p2<-ggplot(df1, aes( x = group,y=100 * values,fill = tax))+#geom_col和geom_bar这两条命令都可以绘制堆叠柱形图 geom_col(position = 'stack', width = 0.6)+#geom_bar(position = "stack", stat = "identity", width = 0.6) scale_y_continuous(expand = c(0,0))+# 调整y轴属性,使柱子与X轴坐标接触 labs(x="Group",y="Relative Abundance(%)",#设置X轴和Y轴的名称以及添加标题 fill="tax")+ guides(fill=guide_legend(keywidth = 1, keyheight = 1)) +#修改图例的框大小 theme_prism(palette = "candy_bright", base_fontface = "plain", # 字体样式,可选 bold, plain, italic base_family = "serif", # 字体格式,可选 serif, sans, mono, Arial等 base_size = 16, # 图形的字体大小 base_line_size = 0.8, # 坐标轴的粗细 axis_text_angle = 45)+ # 可选值有 0,45,90,270 scale_fill_prism(palette = "colors")#使用ggprism包修改颜色p2#拼接图plot_grid(p1,p2, labels=c('A','B'), ncol=1, nrow=2)#拼图及标注

调整Y轴展示顺序

#####按照自己的意愿修改y轴显示的顺序df1$tax <- factor(df1$tax,levels = c('5','1','3','2','4'))#绘图p3<-ggplot(df1, aes( x = group,y=100 * values,fill = tax))+#geom_col和geom_bar这两条命令都可以绘制堆叠柱形图 geom_col(position = 'stack', width = 0.6)+#geom_bar(position = "stack", stat = "identity", width = 0.6) scale_y_continuous(expand = c(0,0))+# 调整y轴属性,使柱子与X轴坐标接触 labs(x="Group",y="Relative Abundance(%)",#设置X轴和Y轴的名称以及添加标题 fill="tax")+ guides(fill=guide_legend(keywidth = 1, keyheight = 1)) +#修改图例的框大小 theme_prism(palette = "candy_bright", base_fontface = "plain", # 字体样式,可选 bold, plain, italic base_family = "serif", # 字体格式,可选 serif, sans, mono, Arial等 base_size = 16, # 图形的字体大小 base_line_size = 0.8, # 坐标轴的粗细 axis_text_angle = 45)+ # 可选值有 0,45,90,270 scale_fill_prism(palette = "colors")#使用ggprism包修改颜色p3#拼接图plot_grid(p1,p3, labels=c('A','B'), ncol=1, nrow=2)#拼图及标注

总结

通过以上示例展示,大家应该也明白了其中的诀窍,那就是将我们的样本名称转换为factor类型数据,然后指定其顺序就可以在绘图过程中得到你所指定的样本顺序了!

我就知道你“在看”

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存