【问题标题】:How to create a violin plot in ggplot2 on aggregated data?如何在聚合数据的 ggplot2 中创建小提琴图?
【发布时间】:2017-06-28 19:45:06
【问题描述】:

我正在尝试在 ggplot2 中基于由预先计算的计数组成的聚合数据创建小提琴图(原始数据太大并且需要很长时间才能绘制)。下面是示例数据集。

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))

Violin Plot (geom_violin) with aggregated values 找到的解决方案似乎无法正常工作,导致密度不准确。当我使用该方法进行绘图并与整个数据集进行比较时,绘图看起来非常不同。

有人知道如何在汇总数据上绘图吗?

【问题讨论】:

  • 如果没有该方法不起作用的数据集,则很难进行故障排除。有更好的例子吗?
  • 此外,聚合图与原始值图的示例也会有所帮助。

标签: r plot ggplot2


【解决方案1】:

您看到的任何差异都可能仅仅是由于计算密度的方式不同造成的。这是您给出的示例:

data <- data.table(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))
data[, count2 := count/sum(count), by = category]
ggplot(data, aes(x = category, y = value, weight = count2)) + geom_violin()

现在这里是重复值的相同数据,而不是计数:

val2 <- unlist(sapply(1:length(data$value), 
                      function(x) rep(data$value[x], 
                                      data$count[x])))
cat2 <- unlist(sapply(1:length(data$value), 
                      function(x) rep(data$category[x], 
                                      data$count[x])))

dat2 <- data.table(cat2, val2)
ggplot(dat2, aes(x = cat2, y = val2)) + geom_violin()

这会生成情节:

差别不大,可能是由计算密度的方式引起的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    • 2021-12-23
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    • 2018-01-15
    • 2016-06-13
    相关资源
    最近更新 更多