绘制与 ggeffects 的 3 向交互,主题更改未应用于所有方面

问题描述 投票:0回答:1

我正在使用 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 3-way interaction

我已阅读 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")

enter image description here

我也尝试过像这样手动进行分面

plot(ggpredict(model_iris, terms=c("Sepal.Width", "Species", "Petal.Width")),  colors = c("#190C3EFF", "#9C2964FF", "#F8870EFF")) + facet_wrap(~"Petal.Size")
但这导致了超级奇怪的输出。

manual facetting

有没有办法将主题更改应用于所有方面?

r ggplot2 visualization ggeffects
1个回答
0
投票

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))

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.