在刻面图中用N注释x轴,但保留空刻面

时间:2016-08-18 21:27:01

标签: r ggplot2 facet-wrap

昨天我问了一个关于annotating the x-axis with N in a faceted plot的问题,使用了一个与我的真实问题相比过于简单的最小例子。给出的答案适用于完整数据,但如果您想要保留缺少的方面,facet_wrap选项drop=FALSEscales="free_x"的组合会触发错误:{{ 1}}

这是一个新的,不那么简单的例子。这里的目标是使用"Error in if (zero_range(from) || zero_range(to)) { : missing value where TRUE/FALSE needed"生成一个包含两个面板的大图;第一个显示治疗组随时间变化的绝对值;第二个显示治疗组随时间的变化。在第二个面板中,当vis = 1时我们需要一个空白面。

grid.arrange

1 个答案:

答案 0 :(得分:1)

您可以添加空白图层以绘制第二个图中的所有构面。关键是您需要一个存在于每个vis级别的变量用作y变量。在您的情况下,您可以简单地使用您在第一个图中使用的变量。

ggplot(data) + 
    geom_boxplot(aes(x = trtN, y = chg, group = trt, colour = trt), show.legend = FALSE) +
    geom_blank(aes(x = trtN, y = val)) +
    facet_wrap(~ vis, switch = "x", nrow = 1, scales = "free_x") +
    labs(x="Visit") + mytheme

enter image description here

如果您的变量具有不同的范围,您可以使用boxplot y变量的总体最小值和最大值来设置y限制。

+ scale_y_continuous(limits = c(min(data$chg, na.rm = TRUE), max(data$chg, na.rm = TRUE)))