我想使用geom_boxplot来制作与两个变量相关的箱线图:对于x值的每个箱,绘制该箱的y值的分布(如箱线图)。我试过了:
ggplot(cars) + geom_boxplot(aes(x=dist, y=speed))
但这基本上创建了一个大的x值区域。我怎样才能为dist
的每个bin创建它,有一个表示相应speed
值的箱线图?
答案 0 :(得分:4)
不确定“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))
答案 1 :(得分:0)
只需将它放在那里,您也可以
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
中使用。