这是我关于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
)
答案 0 :(得分:1)
如果您始终希望对size
和shape
(或其他美学)使用相同的值,则可以使用update_geom_defaults()
将默认值设置为其他值:
update_geom_defaults("point", list(size = 5, shape = 21))
只要你没有专门给出美学价值,就会使用这些。
使用常规默认设置创建的绘图如下所示:
ggplot(mtcars) + geom_point(aes(x = wt, y = mpg))
但是当您重置size
和shape
的默认值时,它看起来会有所不同:
update_geom_defaults("point", list(size = 5, shape = 21))
ggplot(mtcars) + geom_point(aes(x = wt, y = mpg))
如您所见,实际绘图使用与以前相同的代码完成,但结果不同,因为您更改了size
和shape
的默认值。当然,您仍然可以通过在geom_point()
中提供值来生成具有这些美学价值的图表:
ggplot(mtcars) + geom_point(aes(x = wt, y = mpg), size = 2, shape = 2)
请注意,默认值由geom
提供,这意味着只有geom_point()
受到影响。
如果您只想使用size
和shape
的一组值,则此解决方案很方便。如果您希望在创建绘图时能够从中选择多组值,那么您可能会更好地使用lukeA的注释内容。