我想使用 geom_boxplot 制作与两个变量相关的箱线图:对于 x 值的每个箱,绘制该箱的 y 值的分布(作为箱线图)。我试过了:
ggplot(cars) + geom_boxplot(aes(x=dist, y=speed))
但这基本上会创建一大箱 x 值。我怎样才能使每个 bindist
都有一个表示相应speed
值的箱线图?
不确定您所说的“bin”是什么意思,因为您没有在问题中提供任何 bin。如果您只是想要每个唯一dist
值的速度箱线图,您可以这样做(dist
视为离散):
ggplot(cars) + geom_boxplot(aes(factor(dist), speed))
如果您要实际创建垃圾箱,您可以执行以下操作:
cars$bin <- cut(cars$dist, c(1, 10, 30, 50, 200))
ggplot(cars) + geom_boxplot(aes(bin, speed))
只是把它放在那里,你也可以做
bin_size <- 10
cars %>%
mutate(bin_dist = factor(dist%/%bin_size*10)) %>%
ggplot(aes(x = bin_dist, y = speed)) +
geom_boxplot()
为了使标签更好:
(cars2 <- cars %>%
mutate(bin_dist = dist%/%bin_size*10)) %>%
ggplot(aes(x = factor(bin_dist), y = speed)) +
geom_boxplot() +
scale_x_discrete(labels = paste0(unique(cars2$bin_dist), "-", unique(cars2$bin_dist)+10)) +
labs(x = "dist")
cars2
被保存,因此它可以在paste0
.