如何在R语言中绘制按Sample Site分组的堆叠柱状图?
R ggplot堆叠柱状图实现子分组的两种方案
以下两种方法均可实现堆叠柱状图按上层采样位点分组、同组内排列对应样本的效果:
- 方案1:使用ggplot2自带分面功能(无需额外安装包,适配绝大多数场景)
library(ggplot2) ggplot(PFASData, aes(fill = Species, y = value, x = ID)) + geom_bar(position = "stack", stat = "identity") + # 按采样位点分面,free_x保证不同分组的样本量不同时不会出现空柱子 facet_grid(. ~ `Sample Site`, scales = "free_x", space = "free_x", switch = "x") + theme( strip.placement = "outside", # 将分面标签移到坐标轴外侧作为上层分组标签 strip.background = element_blank(), # 去掉分面标签的默认背景 panel.spacing = unit(0, "pt") # 消除分面之间的空隙,视觉上是连续的柱状图 )
- 方案2:使用ggh4x包实现嵌套坐标轴(效果更贴合分层轴标签的需求)
# 首次使用需先安装包:install.packages("ggh4x") library(ggplot2) library(ggh4x) ggplot(PFASData, aes(fill = Species, y = value, x = interaction(`Sample Site`, ID))) + geom_bar(position = "stack", stat = "identity") + scale_x_discrete( # 配置嵌套坐标轴,拆分位点和样本ID分别显示为上下层标签 guide = guide_axis_nested(delim = ".", type = "nesting") ) + labs(x = "采样位点 / 样本ID")
注:运行代码前需保证你的数据集里每个ID都对应唯一的Sample Site取值。
内容的提问来源于stack exchange,提问作者TheNerdyCrockett
相关产品推荐
相关产品推荐

