在使用R语言进行数据可视化过程中,大家可能会遇到数据中样本名称顺序与图形中样本展示顺序不一致的问题,或者是我们想要让图形中的样本顺序按照我们指定的进行绘制。今天,小编就给大家用实例进行讲解如何解决如上问题!
R包的安装及加载
rm(list=ls())#clear Global Environment
setwd('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类型数据,然后指定其顺序就可以在绘图过程中得到你所指定的样本顺序了!