我試圖在 sjPlot 中制作一個互動圖,顯示在我的預測變數的兩種條件下我的結果的百分比概率。一切正常,除了 show.values = T 和 sort.est = T 引數,它們似乎沒有做任何事情。有沒有辦法讓它作業?或者,如果沒有,我如何提取 sjPlot 用于創建此圖的資料框?尋找某種方法來標記或制表顯示的概率值。謝謝!
這是一些示例資料以及我目前擁有的資料:
set.seed(100)
dat <- data.frame(Species = rep(letters[1:10], each = 5),
threat_cat = rep(c("recreation", "climate", "pollution", "fire", "invasive_spp"), 10),
impact.pres = sample(0:1, size = 50, replace = T),
threat.pres = sample(0:1, size = 50, replace = T))
mod <- glm(impact.pres ~ 0 threat_cat/threat.pres,
data = dat, family = "binomial")
library(sjPlot)
library(ggpubr)
plot_model(mod, type = "int",
title = "",
axis.title = c("Threat category", "Predicted probabilities of threat being observed"),
legend.title = "Threat predicted",
colors = c("#f2bf10",
"#4445ad"),
line.size = 2,
dot.size = 4,
sort.est = T,
show.values = T)
coord_flip()
theme_pubr(legend = "right", base_size = 30)

uj5u.com熱心網友回復:
sjPlot生成一個 ggplot 物件,因此您可以檢查美學映射和基礎資料。經過一番挖掘,您會發現默認映射對于文本標簽的 x、y 位置已經是正確的,因此您需要做的就是geom_text在繪圖中添加一個,并且只需將標簽指定為美學映射。您可以從名為predicted存盤在 ggplot 物件中的列中獲取標簽。
結果是,如果您將以下圖層添加到繪圖中:
geom_text(aes(label = scales::percent(predicted)),
position = position_dodge(width = 1), size = 8)
你得到

按順序排列標簽比較棘手。您必須擺弄情節的內部組件才能做到這一點。假設我們將上面的圖存盤為p,那么我們可以通過執行以下操作按預測百分比排序:
p$data <- as.data.frame(p$data)
ord <- p$data$x[p$data$group == 1][order(p$data$predicted[p$data$group == 1])]
p$data$x <- match(p$data$x, ord)
p$scales$scales[[1]]$labels <- p$scales$scales[[1]]$labels[ord]
p

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/443290.html
上一篇:選擇點方法:在R中繪制互動效果
下一篇:堆積條形圖:如何定義填充
