我想制作一个分组的箱形图,所以首先我修改了我在互联网上找到的一段代码(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 =值的水平线段。
如何解决此问题?
答案 0 :(得分:0)
事实上,我意识到geom_crossbar对我想做的事情更好。
这是Y轴上的值;因子2在X轴上; oil1和oil2的不同填充颜色;一个彩色条,从最小值到最大值,以每个油+产品组合的平均值为中心(总共4个条)
结果看起来应该像这个回答类似问题的图片一样: https://stackoverflow.com/a/21561408/4518857