2013-05-06 99 views
4

我想用汇总数据创建小提琴剧情。我的数据有一个类别,值coloumn和计数coloumn:汇总值的小提琴剧情(geom_violin)

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 

http://www.ahschulz.de/pub/overflow/violin_plot.png

那不是我通缉。解决方案是通过乘以每个类别 - 值组合的行来重塑数据帧。问题是,我的数量上升到数百万,需要数小时来绘制! :-(

是否与我的数据的解决方案提前

感谢

回答

6

计算领域时,您可以提交一个权重。

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

您会收到警告消息,权重不会添加到一个,但没关系。见here for similar/related discussion

enter image description here

+0

这似乎给不准确的密度。当我使用这种方法进行绘图并与整个数据集进行绘图比较时,绘图看起来非常不同 – 2017-06-28 19:37:07

2

使用stat="identity"并指定violinwidth审美似乎工作,虽然我不得不把在蒙混因素:?!

ggplot(data, aes(x = category, y = value)) + 
    geom_violin(stat="identity",aes(violinwidth=0.2*count)) 
+0

整洁的解决方案,这似乎不计算KDE可言,只是连接数(与蒙混因素给予一定的gurth?)这可能在某些情况下是可取的。 – 2013-05-06 12:39:52

+0

是的。我认为你的解决方案是OP实际需要的。 – 2013-05-06 13:05:46

+0

ggplot的新版本是否有类似的解决方案?如果我在版本2.1.0中使用这个代码,我会得到'Error:Unknown parameters:trim,scale'。 – M4RT1NK4 2016-05-31 15:14:23