在 R 中获取 sjPlot 以显示和排序估计值
Get sjPlot in R to show and sort estimates
我正在尝试在 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)
sjPlot
生成一个 ggplot 对象,因此您可以检查美学映射和基础数据。经过一番挖掘后,您会发现默认映射对于文本标签的 x、y 位置已经正确,因此您需要做的就是在图中添加一个 geom_text
,只需要指定标签作为美学映射。您可以从存储在 ggplot 对象中的名为 predicted
的列中获取标签。
结果是,如果您将以下图层添加到绘图中:
geom_text(aes(label = scales::percent(predicted)),
position = position_dodge(width = 1), size = 8)
你得到
整理标签比较棘手。您必须 fiddle 使用绘图的内部组件才能执行此操作。假设我们将上面的图存储为 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
我正在尝试在 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)
sjPlot
生成一个 ggplot 对象,因此您可以检查美学映射和基础数据。经过一番挖掘后,您会发现默认映射对于文本标签的 x、y 位置已经正确,因此您需要做的就是在图中添加一个 geom_text
,只需要指定标签作为美学映射。您可以从存储在 ggplot 对象中的名为 predicted
的列中获取标签。
结果是,如果您将以下图层添加到绘图中:
geom_text(aes(label = scales::percent(predicted)),
position = position_dodge(width = 1), size = 8)
你得到
整理标签比较棘手。您必须 fiddle 使用绘图的内部组件才能执行此操作。假设我们将上面的图存储为 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