ggplot2:geom_boxplot的奇怪行为

时间:2015-02-03 04:29:24

标签: r ggplot2 boxplot

我想制作一个分组的箱形图,所以首先我修改了我在互联网上找到的一段代码(http://www.r-bloggers.com/ggplot2-multiple-boxplots-with-metadata/),以生成测试值的数据框:

    Y <- data.frame(
      values = c(rnorm(mean=20, sd=4, n=3), rnorm(mean=10, sd=2, n=3), rnorm(mean=50, sd=10, n=3), rnorm(mean=60, sd=12, n=3)),
      factor1 = rep(c('oil1', 'oil2'), each = 3),
      factor2 = rep(c('product1', 'product2'), each = 6)
   )

    values  factor1 factor2
1   13.527314   oil1    product1
2   23.495898   oil1    product1
3   14.881210   oil1    product1
4   9.110103    oil2    product1
5   9.330372    oil2    product1
6   10.846560   oil2    product1
7   40.786020   oil1    product2
8   43.157393   oil1    product2
9   43.050182   oil1    product2
10  39.588651   oil2    product2
11  65.963630   oil2    product2
12  63.425253   oil2    product2

然后,代码:

ggplot(Y, aes(x = factor2, y = values, fill = factor1)) +
  geom_boxplot()

生成我想要的箱线图。

我的真实数据位于另一个数据框中,创建时读取.csv文件:

    values  factor1 factor2
1   0.2 oil1    product1
2   1.7 oil1    product1
3   3.2 oil1    product1
4   27.8    oil2    product1
5   29.8    oil2    product1
6   31.8    oil2    product1
7   0   oil1    product2
8   1   oil1    product2
9   2.5 oil1    product2
10  29.3    oil2    product2
11  31.3    oil2    product2
12  33.3    oil2    product2

(我无法纠正此表中的错误) 然而,当我尝试使用上面的代码创建一个箱形图时,而不是框,该图包含y =值的水平线段。

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

事实上,我意识到geom_crossbar对我想做的事情更好。

这是Y轴上的值;因子2在X轴上; oil1和oil2的不同填充颜色;一个彩色条,从最小值到最大值,以每个油+产品组合的平均值为中心(总共4个条)

结果看起来应该像这个回答类似问题的图片一样: https://stackoverflow.com/a/21561408/4518857