【发布时间】:2019-08-13 21:56:23
【问题描述】:
我需要在下面的图中添加一些部分箱线图:
library(tidyverse)
foo <- tibble(
time = 1:100,
group = sample(c("a", "b"), 100, replace = TRUE) %>% as.factor()
) %>%
group_by(group) %>%
mutate(value = rnorm(n()) + 10 * as.integer(group)) %>%
ungroup()
foo %>%
ggplot(aes(x = time, y = value, color = group)) +
geom_point() +
geom_smooth(se = FALSE)
我会在上面的图中添加一个 (2 x 4 = 8) 个箱线图(每组 4 个)网格。每个箱线图应考虑连续选择 25(或 n)个点(在每组中)。即,前两个箱线图代表第一个和第 25 个之间的点(下面一个箱线图用于 a 组,一个箱线图用于 b 组)。在它们旁边,还有另外两个箱线图,用于 26 日和 50 日之间的点,等等。如果它们不是在一个完美的网格中(我认为这将更具有挑战性并且更丑陋),那就更好了:我更喜欢它们是否会“遵循”它们相应的平滑线!
这一切都没有使用刻面(因为我必须将它们插入到已经刻面的情节中:-))
我试过了
bar <- foo %>%
group_by(group) %>%
mutate(cut = 12.5 * (time %/% 25)) %>%
ungroup()
bar %>%
ggplot(aes(x = time, y = value, color = group)) +
geom_point() +
geom_smooth(se = FALSE) +
geom_boxplot(aes(x = cut))
但它不起作用。
我尝试使用group 而不是x 调用geom_boxplot()
bar %>%
ggplot(aes(x = time, y = value, color = group)) +
geom_point() +
geom_smooth(se = FALSE) +
geom_boxplot(aes(group = cut))
但它在绘制箱线图时不考虑组,甚至丢失颜色(并且添加包括 color = group 在内的冗余调用也无济于事)
最后,我决定粗略地试一试:
bar %>%
ggplot(aes(x = time, y = value, color = group)) +
geom_point() +
geom_smooth(se = FALSE) +
geom_boxplot(data = filter(bar, group == "a"), aes(group = cut)) +
geom_boxplot(data = filter(bar, group == "b"), aes(group = cut))
有人知道是否可以通过调用geom_boxplot() 来获得它吗?
谢谢!
【问题讨论】: