在R的ggplot2中binning geom_boxplot?

时间:2013-10-08 12:15:50

标签: r ggplot2

我想使用geom_boxplot来制作与两个变量相关的箱线图:对于x值的每个箱,绘制该箱的y值的分布(如箱线图)。我试过了:

ggplot(cars) + geom_boxplot(aes(x=dist, y=speed))

但这基本上创建了一个大的x值区域。我怎样才能为dist的每个bin创建它,有一个表示相应speed值的箱线图?

2 个答案:

答案 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()

geom_boxplot, bin-size 10

并使标签更好:

(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")

Same plot with improved labels

cars2已保存,因此可以在paste0中使用。