如何用多种美学改变图例大小/增加R中图例中变量之间的空间



我的问题有两部分。下面我提供了示例数据和使用ggplot 创建代表性绘图的代码

structure(list(x = c(2.93131952459005, 3.21275054434318, 1.36466997175509, 
2.13626543532502, 1.45889556823722, 1.94598707699052, 0.719062322132357, 
2.38139571953234, 2.37813367615963, 3.98126576880209), y = c(7.51581380181603, 
9.77495763943671, 8.9666894018554, 8.62675858853528, 7.89238665417542, 
9.84865061237773, 7.24526820962333, 7.64727218939944, 7.28026738945878, 
8.6913070524479), z = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 2L, 
3L, 3L, 3L), .Label = c("a", "b", "c"), class = "factor"), z2 = structure(c(1L, 
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L), .Label = c("cat", "dog"), class = "factor")), class = "data.frame", row.names = c(NA, 
-10L))
ggplot(exampledata, aes(x = x, y = y, color = z, shape = z))+geom_point()+geom_line(aes(color = z, linetype = z2))+
scale_linetype_manual(values = c(1,2,3))+theme(legend.position = 'top')

第1部分:当存在多重美学时,改变图例大小。

当你看到制作的图形时,传说中的z有两种美学:颜色和形状。但是,它指的是线条颜色,而不仅仅是点颜色/形状。我想知道是否有一种方法可以增加z的点的大小(仅在图例中(,同时保持z中的线大小不变。我尝试过用大小作为参数的override.aes(),但这会增加点和线的大小。

第2部分:增加图例中变量之间的间距。

这应该很简单,但我还没有找到一个直截了当的答案。在图例中,z和z2显然是独立的组件,但有没有办法增加这些变量之间的整体空间?我不是在说像legend.spacing.x中那样增加每个变量的每个级别之间的空间。本质上,我希望在";c";来自z和z2的标题。

要回答您的第1部分问题,请参阅filups21对以下SO问题ggplot2的回答:调整图例中的符号大小。本质上,您需要使用以下代码来更改底层网格美学。

# Make JUST the legend points larger without changing the size of the legend lines:
# To get a list of the names of all the grobs in the ggplot
g
grid::grid.ls(grid::grid.force())
# Set the size of the point in the legend to 2 mm
grid::grid.gedit("key-[-0-9]-1-1", size = unit(4, "mm"))
# save the modified plot to an object
g2 <- grid::grid.grab()
ggsave(g2, filename = 'g2.png')

第2部分的答案稍微简单一点,只需要在ggplot2语句中添加一小部分。尝试添加以下内容:+ theme(legend.spacing = unit(5, units = "cm"))。然后玩单位测量,直到你得到想要的外观。

相关内容

  • 没有找到相关文章

最新更新