jjc*_*cii 2 r facet ggplot2 legend-properties sjplot
我已经成功地使用plot_model
函数sjplot
绘制了多项逻辑回归模型。回归包含一个结果(Info Sought,具有 3 个级别)和 2 个连续预测变量(DSA、ASA)。我还更改了 ASA 的值,以便plot_model
根据 ASA 平均值和 SD 绘制预测效果结果:
plot1 <- plot_model(multinomialmodel , type = "pred", terms = c("DSA", "ASA[meansd]")
Run Code Online (Sandbox Code Playgroud)
我有两个定制问题:
1) 分面顺序:分面顺序基于结果级别的默认字母顺序(“展开”然后“第一张图片”然后“多张图片”)。有没有办法可以调整这个?在运行和绘制模型之前,我尝试使用 来重新排序级别factor()
(如此处的示例),但这并没有导致生成的构面顺序发生任何变化。ggplot2
也许可以通过 ggplot2 来代替,如此处提供的第一个解决方案中所示?
2) 图例标签:图例当前使用 ASA 的 -1 SD、平均值和 +1 SD 值来标记绘制的线;有没有办法调整这些标签,而不是简单地说“-1 SD”、“平均值”和“+1 SD”而不是原始值?
谢谢!
首先,我使用您提供的数据复制您的绘图:
library(dplyr)
library(readr)
library(nnet)
library(sjPlot)
"ASA,DSA,Info_Sought
-0.108555801,0.659899854,First Pic
0.671946671,1.481880373,First Pic
2.184170211,-0.801398848,First Pic
-0.547588442,1.116555698,First Pic
-1.27930951,-0.299077419,First Pic
0.037788412,1.527545958,First Pic
-0.74271406,-0.755733264,Multiple Pics
1.20854212,-1.166723523,Multiple Pics
0.769509479,-0.390408588,Multiple Pics
-0.450025633,-1.02972677,Multiple Pics
0.769509479,0.614234269,Multiple Pics
0.281695434,0.705565438,Multiple Pics
-0.352462824,-0.299077419,Expand
0.671946671,1.481880373,Expand
2.184170211,-0.801398848,Expand
-0.547588442,1.116555698,Expand
-0.157337206,1.070890114,Expand
-1.27930951,-0.299077419,Expand" %>%
read_csv() -> d
multinomialmodel <- multinom(Info_Sought ~ ASA + DSA, data = d)
p1 <- plot_model(multinomialmodel ,
type = "pred",
terms = c("DSA", "ASA[meansd]"))
p1
Run Code Online (Sandbox Code Playgroud)
您的重构尝试没有成功,因为您sjPlot::plot_model()
不注意。解决分面重新排序的一种方法是生成如上所述的初始图,并将数据中的分面变量替换为包含所需顺序的因子版本,如下所示:
p2 <- p1
p2$data$response.level <- factor(p2$data$response.level,
levels = c("Multiple Pics", "First Pic", "Expand"))
p2
Run Code Online (Sandbox Code Playgroud)
最后,为了解决图例标签问题,我们可以将色标替换为包含您所需标签的色标:
p2 +
scale_color_discrete(labels = c("-1 SD", "mean", "+1 SD"))
Run Code Online (Sandbox Code Playgroud)