我试图在ggplot2
中简化我的情节。假设我想从虹膜数据集创建一个散点图:
ggplot(iris, aes(x=Petal.Length, y=Petal.Width, colour=Species)) +
geom_point()
但是假设我不喜欢ggplot2
默认主题和调色板。我们想说我想使用theme_bw
和Dark2
调色板:
ggplot(iris, aes(x=Petal.Length, y=Petal.Width, colour=Species)) +
geom_point() +
theme_bw() +
scale_color_brewer(palette="Dark2")
假设我有很多情节,我希望所有情节都使用theme_bw
和Dark2
调色板。我知道我可以使用theme_set(theme_bw())
使我的所有情节都有黑白主题。是否有类似的功能使我的所有情节都使用Dark2
调色板?换句话说,我该如何运行像
ggplot(iris, aes(x=Petal.Length, y=Petal.Width, colour=Species)) +
geom_point()
并在我的所有情节中都有theme_bw
和Dark2
调色板?
答案 0 :(得分:2)
一种解决方案是编写自定义包装器:
ggcust <- function(...){
ggplot(...) +
theme_bw()
}
填写您需要的所有theme
选项,然后像这样使用它:
ggcust(data = mtcars, aes(x = mpg, y = cyl)) +
geom_point()
答案 1 :(得分:1)
您还可以将图层放入list
:
gglayer_theme <- list(
theme_bw(),
scale_color_brewer(palette="Dark2")
)
并将列表视为新图层(注意+
在此列表符号中变为,
):
ggplot(iris, aes(x=Petal.Length, y=Petal.Width, colour=Species)) +
geom_point() +
gglayer_theme
自定义包装方法的优点是可以轻松混合图层:
gglayer_labs <- list(
labs(
x = "x",
y = "y"
)
)
ggplot(iris, aes(x=Petal.Length, y=Petal.Width, colour=Species)) +
geom_point() +
gglayer_theme +
gglayer_labs
或预先组合它们:
gglayer_all <- c(gglayer_theme, gglayer_labs)
ggplot(iris, aes(x=Petal.Length, y=Petal.Width, colour=Species)) +
geom_point() +
gglayer_all