R ggplot2:带Stat的小提琴图=";“身份”;

R ggplot2:带Stat的小提琴图=";“身份”;,r,ggplot2,plot,violin-plot,R,Ggplot2,Plot,Violin Plot,我试图使用ggplot创建一个小提琴图,其中小提琴的宽度不是由密度函数控制的,而是直接表示相关元素的计数 我认为这可以通过设置geom_小提琴(stat=“identity”)来实现,但R会抱怨 > ggplot(allData, aes(x = tool, y = length)) + geom_violin(stat="identity") Warning: Ignoring unknown parameters: trim, scale Error in eval(substitut

我试图使用
ggplot
创建一个小提琴图,其中小提琴的宽度不是由密度函数控制的,而是直接表示相关元素的计数

我认为这可以通过设置
geom_小提琴(stat=“identity”)
来实现,但R会抱怨

> ggplot(allData, aes(x = tool, y = length)) + geom_violin(stat="identity")
Warning: Ignoring unknown parameters: trim, scale
Error in eval(substitute(list(...)), `_data`, parent.frame()) : 
  object 'violinwidth' not found
按照建议,尝试添加
aes(violinwidth=0.2*count)
,会给出

> ggplot(allData, aes(x = tool, y = length)) + geom_violin(stat="identity", aes(violinwidth=0.2*count))
Warning: Ignoring unknown parameters: trim, scale
Warning: Ignoring unknown aesthetics: violinwidth
Error in FUN(X[[i]], ...) : object 'count' not found

虽然我可以将
violinwidth
设置为一个常数,但这会使小提琴变成矩形。如何修复此问题?

当我使用一些样本数据运行此程序时,它会生成正常的绘图,无论是否更改
stat
violinwidth
。您的
count
allData
中的一列吗

library(ggplot2)

dt <- data.frame(category = rep(letters[1:2], each = 10),
                 response = runif(20),
                 count = rpois(20, 5))

ggplot(dt, aes(x = category, y = response)) + geom_violin()

ggplot(dt, aes(x = category, y = response)) + 
  geom_violin(stat = "identity", aes(violinwidth = 0.1*count))
库(ggplot2)

啊。事实并非如此。我想我可以使用
count
而不需要
count
列,就像你可以做
geom_小提琴(scale=“count”)
一样,它为你计算计数是的,添加一个
count
列来修复它。