Vioplot有多个小组

时间:2015-07-22 23:53:21

标签: r boxplot

我想制作一张包含四个不同组的四个小提琴图的图表。我收到错误,我不知道该修复什么。每个组(群集)有两列,一组标识符和年龄值(以月为单位)。这是我试图运行的代码。

library(vioplot) 
vioplot(cluster1, cluster2, cluster3, clusterTD, names = c("Group 1","Group 2","Group 3","Group 4 (TD)"), col=(c("hotpink", "darkorange1", "mediumpurple1", "blue")))
title("Violin Plots of Age in Months"))

这是我得到的错误。

  

[.data.frame中的错误(x,顺序(x,na.last = na.last,减去=   减少)):选择未定义的列

有谁知道我做错了什么?

如何解释错误信息?

这是因为x和y没有明确定义吗?

我希望y轴为Age值,x为组(簇),因此有四个组。

我真的很感激我收到的任何帮助!

1 个答案:

答案 0 :(得分:0)

如果没有可重复的示例,很难为您提供准确的解决方案。 我猜你的一个或多个类是data.frame。这会重现错误:

library(vioplot)
x1 <- mtcars$mpg[mtcars$cyl==4] 
vioplot(data.frame(x1),names=c("4 cy"), col="gold") 

您应该unlist您的群组参数。

vioplot(unlist(cluster1), unlist(cluster2), unlist(cluster3),...)

错误:

内部violplot正在调用quantile S3method。此语句重现相同的错误:

quantile(data.frame(x1),0.25)

实际上,default quantile S3method被调用,它期待一个数字向量。它失败了data.frame。我认为应该在函数开头检查quantile默认函数。类似的东西:

if(!is.vector(x)) stop("arg should be a numeric vector")