You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用ggplot在图表底部添加平铺式图例?

实现带底部平铺式图例的ggplot2图表

要在facet_wrap的主图下方添加平铺式图例,可以借助patchwork包将主图与自定义的图例面板垂直拼接,具体步骤如下:

1. 加载所需包

library(ggplot2)
library(patchwork)

2. 调整主图(隐藏重复的X轴元素)

修改原有代码,隐藏主图的X轴文字、刻度和标题,避免与底部图例重复:

# 主图绘制
main_plot <- ggplot(data1, aes(x=specification, y=point)) +
  geom_errorbar(width=0.1, aes(ymin=lower, ymax=upper)) +
  geom_point(shape=21, size=0.5, fill="black") +
  ylab("Effect") +
  xlab("") +
  # 隐藏X轴相关元素
  theme(axis.text.x = element_blank(),
        axis.ticks.x = element_blank(),
        axis.title.x = element_blank(),
        panel.background = element_blank(),
        strip.background = element_rect(fill = "lightgray")) +
  geom_rect(aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax),
            alpha = 0.1, fill = "blue",
            data = transform(rect, variable = c("Var 1", "Var 2")),
            inherit.aes = FALSE) +
  facet_wrap(vars(variable), ncol = 1)

3. 创建底部平铺图例面板

基于数据中的treatment_size和treatment_info属性,绘制自定义图例面板:

# 提取唯一的研究-处理对应信息
legend_data <- unique(data1[, c("specification", "treatment_size", "treatment_info")])

# 绘制图例面板
legend_plot <- ggplot(legend_data, aes(x=specification)) +
  # 用色块展示是否有处理
  geom_tile(aes(y = "处理信息", fill = treatment_info), height = 0.8) +
  # 用点的大小展示处理规模
  geom_point(aes(y = "处理规模", size = treatment_size), color = "black") +
  # 自定义颜色和点大小范围
  scale_fill_manual(values = c("No" = "white", "Yes" = "gray60")) +
  scale_size(range = c(1, 4)) +
  theme_minimal() +
  # 调整图例面板样式
  theme(axis.text.x = element_text(angle=90, vjust=0.5, hjust=1),
        axis.title = element_blank(),
        panel.grid = element_blank(),
        legend.position = "bottom",
        legend.box = "vertical",
        legend.title = element_text(size=8),
        legend.text = element_text(size=7)) +
  labs(fill = "是否含处理?", size = "处理规模")

4. 拼接主图与图例面板

使用patchwork的垂直拼接语法,调整两者的高度比例:

# 拼接并设置高度占比
main_plot / legend_plot + plot_layout(heights = c(4, 1))

效果说明

  • 主图保留原有facet布局,专注展示效应值的误差棒和点,以及蓝色参考区间
  • 底部图例面板与主图X轴的研究标签一一对应,直观展示每个研究的处理属性
  • 可根据需求修改图例面板的元素(如更换geom、调整颜色/大小、添加其他属性)

内容的提问来源于stack exchange,提问作者Wilson King

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 11:42:03