我正在使用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"))
它给了我一条带有两条蓝线和一条红线的图。情节中没有黑线!
尝试使用其他方式没有帮助:
plot_model(fit, colors = NULL)+
scale_fill_sjplot(palette = "viridis", discrete = TRUE)+
scale_color_viridis(discrete = TRUE)
它实际上使用了viridis调色板,但同样使用了两条紫色线和一条黄色线。并返回以下消息:
“'填充'的比例已经存在。为'填充'添加另一个比例,它将替换现有比例。” “'颜色'的比例已经存在。为'颜色'添加另一个比例,它将替换现有的比例。”
如果我在代码中设置了colors = NULL
,它应该不返回这些消息吗?
对于为每个预测变量获得一种不同颜色的任何帮助,我将不胜感激。 注意:此图将与具有相同预测变量的其他图组合。因此,我希望在两个图中使它们具有相同的颜色,以提高可读性。
答案 0 :(得分:0)
默认情况下,颜色/填充美感映射到每个系数是正还是负。要覆盖此参数并告诉sjPlot将这三个系数中的每一个视为自己的组,可以在group.terms = c(1, 2, 3)
中将plot_model
指定为参数:
plot_model(fit,
group.terms = c(1, 2, 3),
colors = c("blue", "red", "black"))
该函数的默认行为还按字母顺序对系数进行排序,从而弄乱了蓝红黑序列。为了保持系数的原始顺序(即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"))