5

我想用聚合数据创建小提琴图。我的数据有一个类别、一个值列和一个计数列:

data <- data.frame(category = rep(LETTERS[1:3],3),
                   value = c(1,1,1,2,2,2,3,3,3),
                   count = c(3,2,1,1,2,3,2,1,3))

如果我创建一个简单的小提琴图,它看起来像这样:

plot <- ggplot(data, aes(x = category, y = value)) + geom_violin()
plot


(来源:ahschulz.de

那不是我想要的。一种解决方案是通过将每个类别值组合的行相乘来重塑数据框。问题是我的计数高达数百万,需要数小时才能绘制出来!:-(

我的数据有解决方案吗?

提前致谢!

4

2 回答 2

7

您可以在计算面积时提交权重。

plot2 <- ggplot(data, aes(x = category, y = value, weight = count)) + geom_violin()
plot2

您将收到权重不相加的警告消息,但这没关系。有关类似/相关讨论,请参见此处。

在此处输入图像描述

于 2013-05-06T12:32:15.367 回答
2

使用stat="identity"和指定violinwidth美学似乎是有效的,尽管我不得不加入一个软糖因素:

ggplot(data, aes(x = category, y = value)) + 
   geom_violin(stat="identity",aes(violinwidth=0.2*count))
于 2013-05-06T12:31:21.587 回答