将ggplot2 geom属性赋给变量

时间:2016-04-23 20:23:13

标签: r ggplot2

这是我关于stackoverflow的第一个问题所以如果问题不清楚,请纠正我。

我想将ggplot2的geom属性分配给变量,以便在多个图中重用。例如,我想说我想将大小和形状的属性分配给变量,以便在绘制除mtcars之外的数据时重新使用。

此代码有效,但如果我有很多情节,我不想继续重新输入尺寸和形状属性。

ggplot(mtcars) +
  geom_point(aes(x = wt, 
             y = mpg),
         size = 5,
         shape = 21
         )

我应该如何为这些属性分配一个变量(例如size.shape),以便我可以在下面的代码中使用它来生成相同的图?

ggplot(mtcars) +
  geom_point(aes(x = wt,
             y = mpg),
         size.shape
         )

1 个答案:

答案 0 :(得分:1)

如果您始终希望对sizeshape(或其他美学)使用相同的值,则可以使用update_geom_defaults()将默认值设置为其他值:

update_geom_defaults("point", list(size = 5, shape = 21))

只要你没有专门给出美学价值,就会使用这些。

实施例

使用常规默认设置创建的绘图如下所示:

ggplot(mtcars) + geom_point(aes(x = wt, y = mpg))

enter image description here

但是当您重置sizeshape的默认值时,它看起来会有所不同:

update_geom_defaults("point", list(size = 5, shape = 21))
ggplot(mtcars) + geom_point(aes(x = wt, y = mpg))

enter image description here

如您所见,实际绘图使用与以前相同的代码完成,但结果不同,因为您更改了sizeshape的默认值。当然,您仍然可以通过在geom_point()中提供值来生成具有这些美学价值的图表:

ggplot(mtcars) + geom_point(aes(x = wt, y = mpg), size = 2, shape = 2)

enter image description here

请注意,默认值由geom提供,这意味着只有geom_point()受到影响。

如果您只想使用sizeshape的一组值,则此解决方案很方便。如果您希望在创建绘图时能够从中选择多组值,那么您可能会更好地使用lukeA的注释内容。