如何使某些变量的图不可见?

时间:2019-01-10 21:08:02

标签: r ggplot2

我正在使用很棒的dwplot软件包(基于ggplot构建)来创建点须图。它们看起来不错,但是要展示我的结果,我希望能够一次显示一个变量(一行)。因此,第一个图具有除第1行以外的所有结果都不可见的结果,第二个图具有第1行和第2行可见的结果,等等。

我想知道是否有个好方法吗?例如,有没有一种方法可以将变量的子集设置为alpha = 0?

例如,运行

library(dotwhisker)
dwplot(lm(mpg ~ wt + gear + carb, data = mtcars))

给出以下情节。

enter image description here

我想创建一个图,其中“齿轮”和“碳水化合物”文本显示在左侧,但不显示这些图。然后,我可以依次显示系数和置信区间。

1 个答案:

答案 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)

enter image description here