我是R和ggplot2的新手。我如何将定制应用于多个图?我以为我可以将自定义存储在变量中,但这不起作用:
# customization <- theme_bw() + xlab("time")
x <- 1:20
y <- dnorm(x, 10, 5)
y2 <- dnorm(x, 10, 2)
p1 <- ggplot() + geom_line(aes(x,y)) # + customization
p2 <- ggplot() + geom_line(aes(x,y2)) # + customization
现在我想对两个图都应用自定义,而不复制/粘贴两个额外的设置。
答案 0 :(得分:1)
您可以将theme
元素放在一个对象中,将标签放在另一个对象中,然后将它们与+
合并。这并不像你可能希望的那样简洁,但也许它会让你成为那里的一部分。如果您有多个标签和多个theme
元素,它将为您节省一些输入。例如:
x <- rep(1:20,2)
y <- c(dnorm(x[1:20], 10, 5), dnorm(x[21:40], 20, 5))
group = factor(rep(c("A","B"),each=20))
dat=data.frame(x,y,group)
opt <- theme(title=element_text(size=18, colour="green"),
axis.text=element_text(size=13, colour="black"),
axis.title=element_text(size=15, colour="blue"),
legend.title=element_text(colour="black"))
lab <- labs(x="Time", y="Value", colour="Group", title="Plot Title")
ggplot(dat) + geom_line(aes(x,y, colour=group)) + opt + lab
更新:Per @ Baptiste的评论,您可以将theme
和labs
元素合并到一个list
对象中:
custom <- list(opt, lab)
ggplot(dat) + geom_line(aes(x,y, colour=group)) + custom
答案 1 :(得分:0)
您可以将它们组合在一起,如下所示:
ggplot() +
geom_line(aes(x,y), color="red") +
geom_line(aes(x,y2), color="blue") +
theme_bw() + xlab("time")
给出: