如何在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
相关产品推荐
相关产品推荐

