我正在使用 ggeffects 中的绘图和预测函数来绘制 3 向交互。正在生成绘图,但是当我尝试应用主题更改时,它们仅应用于第二个方面,请参见下文
library(ggeffects)
library(ggplot2)
dat_iris <- iris
dat_iris$Petal.Size <- ifelse(dat_iris$Petal.Length <= 3, "small", "big")
model_iris <- glm(Sepal.Length ~ Sepal.Width*Species + Petal.Width + Petal.Size, data = dat_iris)
gg_iris <- plot(ggpredict(model_iris, terms=c("Sepal.Width", "Species", "Petal.Width", "Petal.Size")), colors = c("#190C3EFF", "#9C2964FF", "#F8870EFF"))
gg_iris
gg_iris +
xlab("Sepal Width") +
ylab("Sepal Length") +
guides(color = guide_legend("Species"), fill = guide_legend("Species")) +
theme_minimal() +
theme(panel.grid.major = element_line(color = "#E5E5E5", linetype = "dashed", linewidth = 0.3),
panel.background = element_rect(fill = "white", color = NA),
plot.title = element_blank(),
legend.title = element_text(face = "bold", size = 9),
legend.text = element_text(size = 9),
legend.position = "right",
axis.title.x = element_text(face = "bold", size = 9),
axis.title.y = element_text(face="bold", size = 9),
strip.background = element_rect(fill = "#F0F0F0", color = NA),
strip.text = element_text(face = "bold", size = 9)) +
scale_y_continuous(breaks = 4:8) +
scale_x_continuous(breaks = 2:5)
生成的图像如下所示:
我已阅读 ggeffects 文档,其中指出“加载库(ggplot2)并使用 theme_set(theme_ggeffects()) 将 ggeffects 主题设置为默认绘图主题。然后您可以使用进一步的绘图修改器,例如来自 sjPlot 的,例如legend_style() 或 font_size() 不会丢失主题修改。”然而,这似乎不适用于正常的 ggplot2 主题调整。即使遵循此处的文档https://strengejacke.github.io/ggeffects/articles/ggeffects.html,主题更改也仅应用于一个方面
gg_iris + theme(legend.position = "bottom")
我也尝试过像这样手动进行分面
plot(ggpredict(model_iris, terms=c("Sepal.Width", "Species", "Petal.Width")), colors = c("#190C3EFF", "#9C2964FF", "#F8870EFF")) + facet_wrap(~"Petal.Size")
但这导致了超级奇怪的输出。
有没有办法将主题更改应用于所有方面?
ggeffects
使用 patchwork
来排列绘图,因此您可以按照应用于 patchwork
对象的方式应用主题和比例。
也就是说,使用
&
而不是 +
将主题和比例应用于排列中的所有图,并使用 plot_layout(guides="collect")
对所有图使用相同的图例。
所以:
gg_iris +
plot_layout(guides="collect") +
xlab("Sepal Width") +
ylab("Sepal Length") +
scale_y_continuous(breaks = 4:8) &
scale_x_continuous(breaks = 2:5) &
guides(color = guide_legend("Species"), fill = guide_legend("Species")) &
theme_minimal() &
theme(panel.grid.major = element_line(color = "#E5E5E5", linetype = "dashed", linewidth = 0.3),
panel.background = element_rect(fill = "white", color = NA),
plot.title = element_blank(),
legend.title = element_text(face = "bold", size = 9),
legend.text = element_text(size = 9),
legend.position = "right",
axis.title.x = element_text(face = "bold", size = 9),
axis.title.y = element_text(face="bold", size = 9),
strip.background = element_rect(fill = "#F0F0F0", color = NA),
strip.text = element_text(face = "bold", size = 9))