【问题标题】:Violin Plot (geom_violin) with aggregated values带有聚合值的小提琴图 (geom_violin)
【发布时间】:2013-05-06 11:12:27
【问题描述】:

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

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

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

我的数据有解决方案吗?

提前致谢!

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

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

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

    您将收到权重不相加的警告消息,但这没关系。见here for similar/related discussion

    【讨论】:

    • 这似乎给出了不准确的密度。当我使用这种方法绘图并与整个数据集进行比较时,绘图看起来非常不同
    【解决方案2】:

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

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

    【讨论】:

    • 简洁的解决方案,这似乎根本不计算 KDE,而只是连接计数(使用 fudge 因子来提供一些知识?)这在某些情况下可能是可取的。
    • 是的。我认为您的解决方案正是 OP 真正想要的。
    • 对于较新版本的 ggplot 是否有类似的解决方案?如果我在 2.1.0 版本中使用此代码,我会得到 Error: Unknown parameters: trim, scale
    • 不知道。也许问一个新问题?我没能在一两分钟内找到解决方案。
    • 我在这里问了一个关于count 遇到的问题的问题:stackoverflow.com/questions/51847367/…
    猜你喜欢
    • 2021-06-29
    • 1970-01-01
    • 2020-08-23
    • 2018-05-19
    • 2020-10-23
    • 2020-07-23
    • 2018-01-15
    • 2017-09-03
    • 1970-01-01
    相关资源
    最近更新 更多