有没有办法改变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包。

现在optsggplot2包中被弃用,应该使用函数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()以查看其他可编辑的图例属性。