【发布时间】:2019-02-04 18:39:03
【问题描述】:
在 R/ggplot2 中,我有多个图,每个图都有一个图例框。
我希望每个图的图例框的宽度相同,但 ggplot2 尝试根据图例名称、键值等(每个图都是唯一的)动态调整图例框的大小。
各种图必须适合指定的发布槽,具有指定的图例宽度,并且必须单独制作图(因此无法保证图上的图例宽度相同)。
查看theme 我找不到指定图例框宽度的选项...有什么想法吗?
【问题讨论】:
-
可能是
keywidth参数:guides(color = guide_legend(keywidth = 10))——例如:ggplot(mtcars, aes(x = hp, y = mpg, col = factor(cyl))) + geom_point() + guides( color = guide_legend(keywidth = 10) ) -
这增加了每个键/值的宽度。我想要的是在每个图例中每个键的默认大小(例如 size = 1),但背景“框”是固定宽度,即使这意味着图例中每个键/值周围都有很大的边距.
-
并且使用固定的边距没有帮助?如:
ggplot(mtcars, aes(x = hp, y = mpg, col = factor(cyl))) + geom_point() + theme( legend.margin = margin(5, 50, 5, 50) ) -
不,它只控制边距,这样总大小就是内容周围的边界框加上边距,而内容的边界框本身仍然是动态大小的。
-
您可以考虑
plot_grid()来自cowplot包(参见here):从每个图中提取图例,使用指定的rel_widths分别绘制无图例图和图例确定分配给每个人的空间。