可以使用ggplot
全局设置theme_set()
主题。
是否有一种方法可以向所有ggplot对象全局添加一个几何图形,例如labs(caption="run ID #")
?我想将标题自动应用于下游的所有ggplots。
答案 0 :(得分:1)
您可以执行以下操作。我找不到我的原始答案
library(ggplot2)
my_predefined_category_order = c("8", "6", "4")
my_labs = list(labs(caption = "run ID #"))
my_xaxis = list(xlab("My axis title"),
scale_x_discrete(limits = my_predefined_category_order),
theme(axis.text.x = element_text(angle = 90, vjust = 0.5)))
my_theme <- theme(axis.text = element_text(size = 20),
axis.title = element_text(size = 14, face = "bold"))
p <- ggplot(mtcars, aes(x = factor(cyl), y = mpg)) +
geom_point()
# Add predefined settings
p + my_labs + my_xaxis + my_theme
由reprex package(v0.2.0)于2018-06-20创建。
答案 1 :(得分:0)
到目前为止,似乎没有简单的方法可以做到这一点,所以我已经在ggplot()
包/名称空间中编辑了ggplot2
函数本身。
我不喜欢这种解决方案,但目前可以解决该问题。对于此方法的缺点,我表示感谢。
我们作图。
library(ggplot2)
ggplot(mtcars, aes(x=disp, y=mpg, col=as.factor(cyl))) +
geom_point()
现在,我们自己编辑ggplot()
函数,并为将输出的 all 图添加默认标题。
ggplot.data.frame.original <- ggplot2:::ggplot.data.frame
ggplot.data.frame.custom <- function (data = NULL, mapping = aes(), ..., environment = parent.frame())
{
ggplot.data.frame.original(fortify(data, ...), mapping, environment = environment) +
labs(caption="My Custom Caption")
}
unlockBinding("ggplot.data.frame", environment(ggplot))
assignInNamespace("ggplot.data.frame", ggplot.data.frame.custom, ns="ggplot2",
envir=environment(ggplot))
assign("ggplot.data.frame", ggplot.data.frame.custom, envir=environment(ggplot))
lockBinding("ggplot.data.frame", environment(ggplot))
我们执行相同的代码来生成如上所示的图,但是这次出现了默认标题。
ggplot(mtcars, aes(x=disp, y=mpg, col=as.factor(cyl))) +
geom_point()