5

我正在尝试使用plot_model()from 函数创建预测值图sjPlot。我希望我的预测线具有不同的线型和不同的颜色。

该函数包含一个colors参数,设置colorsbw将更改linetype,但设置colors为灰度。这个问题很相似,但没有得到任何有用的答案:Colored ribbons and different linetypes in sjPlot plot_model()

例子:

不同linetypes但不colors

data(iris)
toy_model <- lm( Sepal.Length ~ Sepal.Width + Species, data=iris)

my_plot <- plot_model(toy_model, type=("pred"),
terms=c("Sepal.Width","Species"),
colors="bw")

不同colors但不linetypes

data(iris)
toy_model <- lm( Sepal.Length ~ Sepal.Width + Species, data=iris)

my_plot <- plot_model(toy_model, type=("pred"),
terms=c("Sepal.Width","Species"))

我怎样才能得到不同的colors和不同的linetypes?换句话说,我想要这样的东西

这个

4

2 回答 2

3

sjPlot在定制方面似乎相当严格,但有一些方法可以绕过它。您可以从ggpredict(从ggeffects包中)获取数据并像往常一样在ggplot.

df <- ggpredict(toy_model, terms = c("Sepal.Width","Species"))
ggplot(df, aes(x, predicted)) + 
    geom_line(aes(linetype=group, color=group)) +
    geom_ribbon(aes(ymin=conf.low, ymax=conf.high, fill=group), alpha=0.15) +
    scale_linetype_manual(values = c("solid", "dashed", "dotted"))

例子

于 2019-08-18T13:42:42.293 回答
1

plot_model确实允许ggplot2函数调整绘图的特征。您可以轻松更改颜色或线型。

library(sjPlot)
library(ggplot2)

data(iris)
toy_model <- lm( Sepal.Length ~ Sepal.Width + Species, data=iris)

#Use aes to change color or linetype
plot_model(toy_model, type=("pred"),
                      terms=c("Sepal.Width","Species")) + aes(linetype=group, color=group)

#Change color
plot_model(toy_model, type=("pred"),
                      terms=c("Sepal.Width","Species"), colors = "Set2") + aes(linetype=group, color=group)

在此处输入图像描述

于 2020-11-17T10:52:53.527 回答