sjPlot R包中的森林图输出中的不同线条颜色

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

我正在使用sjPlot包准备具有回归系数的森林图。如何自定义回归系数的线条颜色,使每个系数有一种颜色?

我试图在colors = c("blue", "red", "black")中使用plot_model function这个参数,但它没有用。我也尝试使用不同的调色板与scale_color_manual结合,但它也没有用。

以下是sjPlot包的示例:

library(sjPlot)
library(sjmisc)
data(efc)

#I used log before each predictor to have an example of confidence interval
fit <- lm(tot_sc_e ~ log(c161sex) + log(e17age) + log(c160age), data = efc)

plot_model(fit, colors = c("blue", "red", "black"))

它给了我一个带有两条蓝线和一条红线的图。情节中没有黑线!

enter image description here

尝试使用其他方法没有帮助:

plot_model(fit, colors = NULL)+
  scale_fill_sjplot(palette = "viridis", discrete = TRUE)+
  scale_color_viridis(discrete = TRUE)

它实际上使用了viridis调色板,但同样使用了两条紫色线和一条黄线。它返回以下消息:

“'填充'的比例已经存在。为'填充'添加另一个比例,这将取代现有比例。” “'颜色'的比例已经存在。为'颜色'添加另一个比例,这将取代现有比例。”

enter image description here

如果我在代码中设置colors = NULL,它应该不返回这些消息,是吗?

我很感激任何帮助,为每个预测器获得一种不同的颜色。注意:此图将与具有相同预测变量的其他图组合。因此,我希望在两个图中都使用相同的颜色来提高可读性。

r ggplot2 lm sjplot
1个回答
0
投票

默认情况下,颜色/填充美学被映射到每个系数是正还是负。要覆盖此并告诉sjPlot将3个系数中的每个系数视为其自己的组,您可以将group.terms = c(1, 2, 3)指定为plot_model中的参数:

plot_model(fit, 
           group.terms = c(1, 2, 3), 
           colors = c("blue", "red", "black"))

with group terms set

该函数的默认行为还按字母顺序对系数进行排序,这会混淆蓝红黑序列。为了保持系数的原始顺序(即fit中的顺序),我们还可以在order.terms中指定plot_model

plot_model(fit, 
           group.terms = c(1, 2, 3), 
           order.terms = c(1, 2, 3),
           colors = c("blue", "red", "black"))

plot

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