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

如何在ggplot2与ggnewscale中将图例设置为水平而非垂直排列

解决方法

可以实现该需求,通过ggplot2原生的主题配置参数即可控制多图例的排列方向,无需额外扩展包。

完整可运行代码

library(ggplot2)
library(ggnewscale)

ggplot(mtcars, aes(x = mpg, y = cyl)) +
  geom_point(aes(col = gear)) +
  # 若不需要单个图例内部水平排列,可删除guide参数
  scale_color_continuous(guide = guide_legend(direction = "horizontal")) +
  ggnewscale::new_scale_color() +
  geom_point(aes(col = carb)) +
  # 若不需要单个图例内部水平排列,可删除guide参数
  scale_color_continuous(guide = guide_legend(direction = "horizontal")) +
  theme(
    # 核心配置:多图例整体水平堆叠排列
    legend.box = "horizontal",
    # 可选:调整两个图例之间的水平间距
    legend.spacing.x = unit(0.8, "cm")
  )

配置说明

  • legend.box = "horizontal":属于theme()的全局配置,默认值为vertical(垂直堆叠多个图例),修改为horizontal后所有独立图例就会水平排列,该配置对离散、连续类型的图例均生效。
  • guide_legend(direction = "horizontal"):仅用于调整单个图例内部的配色标记、标签的排列方向,如果你只需要两个图例整体水平并排、单个图例内部保持默认的垂直排布,只保留legend.box的配置即可。

效果示例

示例效果图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:15:03