昨天我问了一个关于annotating the x-axis with N in a faceted plot的问题,使用了一个与我的真实问题相比过于简单的最小例子。给出的答案适用于完整数据,但如果您想要保留缺少的方面,facet_wrap
选项drop=FALSE
和scales="free_x"
的组合会触发错误:{{ 1}}
这是一个新的,不那么简单的例子。这里的目标是使用"Error in if (zero_range(from) || zero_range(to)) { : missing value where TRUE/FALSE needed"
生成一个包含两个面板的大图;第一个显示治疗组随时间变化的绝对值;第二个显示治疗组随时间的变化。在第二个面板中,当vis = 1时我们需要一个空白面。
grid.arrange
答案 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
如果您的变量具有不同的范围,您可以使用boxplot y变量的总体最小值和最大值来设置y限制。
+ scale_y_continuous(limits = c(min(data$chg, na.rm = TRUE), max(data$chg, na.rm = TRUE)))