R 分组箱线图

R 分组箱线图,r,boxplot,R,Boxplot,我有数据框,我想绘制分组箱线图。这是部分数据 a <- c(0, 100, 250, 500, 750, 0, 100, 250, 500, 750, 0, 100, 250, 500, 750) b <- c(2.646, 3.756, 26.270, 30.997, 39.294, 2.646, 3.756, 26.270, 30.997, 39.294, 16.363, 25.950, 38.913,45.000, 47.698) c <- c(0.0, 0.5, 0.

我有数据框,我想绘制分组箱线图。这是部分数据

a <- c(0, 100, 250, 500, 750, 0, 100, 250, 500, 750, 0, 100, 250, 500, 750)
b <- c(2.646, 3.756, 26.270, 30.997, 39.294,  2.646, 3.756, 26.270, 30.997, 39.294, 16.363, 25.950, 38.913,45.000, 47.698)
c <- c(0.0, 0.5, 0.1, 5.8, 21.9, 0.0, 0.5, 0.1, 5.8, 21.9, 9.7. 12.5, 25.1, 29.3, 31.9)
d <- c(14.7, 15.0, 13.8, 18.4, 28.2, 14.7, 15.0, 13.8, 18.4, 28.2, 23.6, 24.0, 25.7, 29.0, 33.1)
但我无法得到所需的分组箱线图,即每个“a”值有三个箱线图。但如果我这样做,我可以得到每个“a”值的箱线图:

boxplot(b~a, data = data)

我的分组箱线图有什么问题?

这基本上是Thierry的解决方案,但使用
箱线图(long$value~long$a+long$variable)
而不是ggplot,一旦使用melt()转换为long并分解a。不过,这是一个不同的分组


首先以长格式而不是宽格式创建数据集

wide <- data.frame(
  a = c(0, 100, 250, 500, 750, 0, 100, 250, 500, 750, 0, 100, 250, 500, 750),
  b = c(2.646, 3.756, 26.270, 30.997, 39.294,  2.646, 3.756, 26.270, 30.997, 39.294, 16.363, 25.950, 38.913,45.000, 47.698),
  c = c(0.0, 0.5, 0.1, 5.8, 21.9, 0.0, 0.5, 0.1, 5.8, 21.9, 9.7, 12.5, 25.1, 29.3, 31.9),
  d = c(14.7, 15.0, 13.8, 18.4, 28.2, 14.7, 15.0, 13.8, 18.4, 28.2, 23.6, 24.0, 25.7, 29.0, 33.1)
)
library(reshape2)
long <- melt(wide, id.vars = "a")

首先:a、b、c、d有不同的长度。谢谢我编辑了包含16个元素的向量。它们应该有15个元素。但我想通过为每个“a”值绘制三个箱线图(b、c和d)来进行比较。这总共是15个箱线图。听起来像是要绘制hi-lo图,而不是箱线图。您希望用您的数据显示什么?箱线图根据四分位数范围(IQR)绘制中位数和四分位数,并总结分布、偏度和异常值。是的,你说得对,这是箱线图和胡须图,我假设它是一个缩写。我想展示b、c和d值在每个“a”级别的可变性。或者换言之,在“a”的每一级绘制三框和胡须图。不应该
太长时间。太棒了。但是当我用我的真实数据尝试上面的方法时,我得到了一条错误消息,比如:@ontumenal,@Thierry。但是,当我用与上述数据相似但只有1000行的真实数据尝试上述操作时,我得到了一条错误消息,如:melt_check中出错(data,id.vars,measure.vars,variable.name,value.name):object'id.vars'notfound@G1124E长度不是问题。我尝试了1500行的语法。你能粘贴你写的代码吗?它应该是
long@本体的。你最后的评论澄清了我的错误。再次非常感谢。
boxplot(b~a, data = data)
wide <- data.frame(
  a = c(0, 100, 250, 500, 750, 0, 100, 250, 500, 750, 0, 100, 250, 500, 750),
  b = c(2.646, 3.756, 26.270, 30.997, 39.294,  2.646, 3.756, 26.270, 30.997, 39.294, 16.363, 25.950, 38.913,45.000, 47.698),
  c = c(0.0, 0.5, 0.1, 5.8, 21.9, 0.0, 0.5, 0.1, 5.8, 21.9, 9.7, 12.5, 25.1, 29.3, 31.9),
  d = c(14.7, 15.0, 13.8, 18.4, 28.2, 14.7, 15.0, 13.8, 18.4, 28.2, 23.6, 24.0, 25.7, 29.0, 33.1)
)
library(reshape2)
long <- melt(wide, id.vars = "a")
long$a <- factor(long$a)
library(ggplot2)
ggplot(long, aes(x = a, y = value, colour = variable)) + geom_boxplot()