TL; DR:如何保存绘图轴文本和大小等等以使我的代码缩短?
比如说我想用不同的geom绘制不同的数据,但使用相同的轴文本大小和标题。
在编写代码中看起来像这样
ggplot(data = df, aes(x = x, y = y) + geom_line() +
ylab("my y axis") +
xlab("my x axis") +
opts(title = "my title") +
theme(axis.text=element_text(size=20),
axis.title=element_text(size=14,face="bold"))
ggplot(data = new_df, aes(x = whatever, y = something) + geom_anythingelse() +
ylab("my y axis") +
xlab("my x axis") +
opts(title = "my title") +
theme(axis.text=element_text(size=20),
axis.title=element_text(size=14,face="bold"))
#...
我如何保存
my_theme <- ylab("my y axis") +
xlab("my x axis") +
opts(title = "my title") +
theme(axis.text=element_text(size=20),
axis.title=element_text(size=14,face="bold"))
作为我自己的对象,在我喜欢时添加到ggplot。 ggplot是否足够灵活以满足我的需求?
ggplot(data = df, aes(x = x, y = y) + geom_point() +
my_theme
这个问题是否违反了构建ggplot的对象命名理念?
答案 0 :(得分:17)
您可以毫无问题地制作主题对象,例如:
mytheme<-theme(panel.background=element_rect(colour="green"))
如果这是您输入
的标准主题,那就更容易了old_theme<- theme_update(panel.background=element_rect(colour="green"))
在前一种情况下,你写道:
ggplot(...)+mytheme
而在后者中,因为您的自定义主题现在是标准主题,所以只需键入:
ggplot(...)
答案 1 :(得分:10)
Stack Overflow用户baptiste在我的问题上用信息块评论我要保存的标签可以保存为列表。他提到可以将geoms和scale放入列表中,但我只测试了标签。当我测试它时,如果我将它们写入列表并且必须单独保存,则主题不起作用。
my_labels <- list(ylab("my y axis"),
xlab("my x axis"),
ggtitle("my title")
)
my_theme <- theme(axis.text=element_text(size=20),
axis.title=element_text(size=14,face="bold"))
ggplot(data = df, aes(x = x, y = y) + geom_line() + my_labels + my_theme