我正在用sjPlot的plot_model()绘制回归模型。我想将线条颜色从sjPlot主题(红线和蓝线)更改为黑白或灰度。但是,当我使用set_theme(theme_bw())时,绘图外观不会改变(theme_bw来自ggplot2,根据我在键入该函数时看到的下拉菜单)。

但是,当我选择可用的sjPlot主题之一(theme_538theme_blanktheme_sjplottheme_sjplot2)时,图形外观的确发生了变化,它们都将线条渲染为红色和蓝色,但是更改了图形背景,所以我认为我的功能正确。

我该如何使用bw或gs主题,或者将绘图的线颜色手动设置为黑白?

library(ggplot2)
library(sjPlot)
library(sjmisc)
#set_theme(theme_bw()) # this does not change the plot appearance
set_theme(theme_538()) # this does change the plot background appearance

M <- glm(DV ~ IV1 + IV2 + IV3 + IV1*IV2*IV3, data = data5, family = quasibinomial("logit"))
p <- plot_model(M, type = "pred", terms = c("IV1", "IV2", "IV3 [-1,0,1]"), theme = theme_get())
p


ps:根据我在网上找到的sjPlot资源,应该有比我看到的更多的sjPlot主题。真奇怪此外,我读到set_theme()函数应该与ggplot2主题一起使用,在这里似乎不是这样。任何错误的想法在哪里?也许我监督的事情很简单?

编辑:我正在使用R版本3.5.0和Rstudio版本1.1.383
谢谢!!

最佳答案

主题选项会更改网格和轴标签等的外观,但不会更改几何图形(如点或线)的外观。因此,您可以使用colors中的plot_model()参数。有一些示例in this vignettes。我想为您提供的解决方案是:

plot_model(M, type = "pred", terms = c("IV1", "IV2", "IV3 [-1,0,1]"), colors = "gs")


要么

plot_model(M, type = "pred", terms = c("IV1", "IV2", "IV3 [-1,0,1]"), colors = "bw")


library(sjPlot)
data(efc)
fit <- lm(barthtot ~ c12hour + neg_c_7 * c161sex * c172code, data = efc)
plot_model(fit, type = "pred", terms = c("neg_c_7", "c172code", "c161sex"), colors = "bw")


r - sjPlot-将绘图线颜色更改为黑色/白色-LMLPHP

plot_model(fit, type = "pred", terms = c("neg_c_7", "c172code", "c161sex"), colors = "gs")


r - sjPlot-将绘图线颜色更改为黑色/白色-LMLPHP

10-08 08:30