我正在使用很棒的dwplot软件包(基于ggplot构建)来创建点须图。它们看起来不错,但是要展示我的结果,我希望能够一次显示一个变量(一行)。因此,第一个图具有除第1行以外的所有结果都不可见的结果,第二个图具有第1行和第2行可见的结果,等等。
我想知道是否有个好方法吗?例如,有没有一种方法可以将变量的子集设置为alpha = 0?
例如,运行
library(dotwhisker)
dwplot(lm(mpg ~ wt + gear + carb, data = mtcars))
给出以下情节。
我想创建一个图,其中“齿轮”和“碳水化合物”文本显示在左侧,但不显示这些图。然后,我可以依次显示系数和置信区间。
答案 0 :(得分:2)
这是一个解决方案,您可以迭代预测变量(使用for
循环并将其传递给dwplot
。
此解决方案首先使模型适合所有预测变量,然后仅传递它们的一个子集(以下预测变量仅具有term
标识符,统计信息以NA
的形式传递)
library(dotwhisker)
# Final result
plots <- list()
# Create a model (using tidy to easily subset)
fit <- broom::tidy(lm(mpg ~ wt + gear + cyl, mtcars))
# Iterate through predictors (#1 is intercept)
for(i in 2:nrow(fit)) {
# empty terms
if (i < nrow(fit)) {
# Add following predictors as NA
terms <- data.frame(term = fit[(i + 1):nrow(fit), ]$term)
} else {
terms <- NULL
}
plots[[i - 1]] <- dwplot(dplyr::bind_rows(fit[1:i, ], terms)) +
# Add fixed scales that all plots
coord_cartesian(xlim = c(-5.5, 1.5))
}
# Final result is stored in list plots
ggpubr::ggarrange(plotlist = plots)