有没有办法改变ggplot2中的图例项目之间的间距?
有没有办法改变ggplot2中的图例项目之间的间距? 我现在有
legend.position ="top"
自动产生一个水平的图例。 然而,物品的间距非常接近,我想知道如何将它们分开。
我认为最好的select是在guides
使用guide_legend
:
p + guides(fill=guide_legend( keywidth=0.1, keyheight=0.1, default.unit="inch") )
注意使用default.unit
,不需要加载grid
包。
现在opts
在ggplot2
包中被弃用,应该使用函数theme
:
library(grid) # for unit() ... + theme(legend.key.height=unit(3,"line")) ... + theme(legend.key.width=unit(3,"line"))
一个简单的修复,我用来在横向图例中添加空间,只需在标签中添加空格(请参阅下面的摘录):
scale_fill_manual(values=c("red","blue","white"), labels=c("Label of category 1 ", "Label of category 2 ", "Label of category 3"))
在水平图例中添加条目间距的方法应该是调整主题元素legend.text
的边距。 例如,要在每个图例标签的右侧添加24pt的空格,对于ggplot对象p
:
p + theme(legend.text = element_text(margin = margin(r = 24, unit = "pt")))
不幸的是,上述不起作用 ,因为legend.text
不响应传递给element_text
margin
值( legend.title
也不legend.title
)。 这是一个已知的错误: https : //github.com/tidyverse/ggplot2/issues/1502
在错误修复之前,添加图例项目之间最简单的选项似乎是将标签自身填充空格,正如user2568648和SaschaH所build议的那样 。
从Koshke在ggplot2和他的博客上( Koshke的博客 )
... + theme(legend.key.height=unit(3,"line")) # Change 3 to X ... + theme(legend.key.width=unit(3,"line")) # Change 3 to X
在控制台中键入theme_get()
以查看其他可编辑的图例属性。