ggplot中legend.spacing.x设置无效,请求技术帮助
问题解答
你遇到的问题源于对legend.spacing.x和legend.key.spacing的作用理解偏差:
legend.spacing.x的作用是控制多个独立图例之间的水平间距(比如同时设置fill和color两个图例时,二者之间的水平距离),并非单个图例内部条目之间的间距,因此你设置这个参数不会对单个图例的条目间隔产生影响。legend.key.spacing是legend.key.spacing.y的别名,当图例为垂直排列时,它负责控制图例条目之间的垂直间距,这也是该参数能生效的原因。
如果需要调整单个图例内部的间距,分两种场景处理:
- 垂直排列的图例:继续使用
legend.key.spacing(或显式写legend.key.spacing.y)来调整条目间的垂直距离 - 水平排列的图例:先设置
legend.direction = "horizontal",再用legend.key.spacing.x控制条目间的水平距离
举个水平排列图例的示例:
ggplot(iris) + geom_bar(aes(Species, fill = Species), stat = "count") + theme( legend.direction = "horizontal", legend.key.spacing.x = unit(20, "points"), # 控制水平条目间的间距 legend.position = "top" )
另外,若要调整图例整体与绘图区域的水平间距,建议使用legend.margin设置图例的内边距,而非legend.spacing.x。
内容的提问来源于stack exchange,提问作者Antje Janosch
相关产品推荐
相关产品推荐

