在ggplot2中具有零计数的躲避条形图

时间:2017-05-29 17:06:23

标签: r ggplot2 bar-chart

假设我们有以下玩具数据结构:

    <ion-list radio-group [(ngModel)]="person1">
      <ion-item>
        <ion-label>Alice</ion-label>
        <ion-radio value="alive"></ion-radio>
        <ion-radio value="dead"></ion-radio>
        <ion-radio value="zombi"></ion-radio>
      </ion-item>
    </ion-list>

在这个数据中,一个分组的计数为零(即B类没有计数值为3):

data <- structure(list(value = c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 
2L, 2L, 2L, 3L, 3L, 3L, 3L), class = structure(c(1L, 1L, 1L, 
2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L), .Label = c("A", 
"B"), class = "factor")), .Names = c("value", "class"), class = "data.frame", row.names = c(NA, 
-16L))

下面的代码绘制了条形图(y轴上的相对频率),但是我需要为零计数显示空白区域。相反,> library(dplyr) > count(data, value, class) Source: local data frame [5 x 3] Groups: value [?] value class n <int> <fctr> <int> 1 1 A 3 2 1 B 3 3 2 A 4 4 2 B 2 5 3 A 4 消除了零计数的条形。有关如何包含零计数的任何建议吗?

ggplot2

enter image description here

此问题与过去的类似问题(例如Don't drop zero count)有关,但建议的解决方案在此处不起作用。

1 个答案:

答案 0 :(得分:2)

这个程序化够了吗?我预先计算了所有内容并绘制了它...请注意table“对于没有数据的因子组合计数为零。

library(ggplot2)
xy <- table(data$class, data$value)
xy <- as.data.frame(xy)

xy$rel.freq <- xy$Freq / aggregate(Freq ~ Var1, FUN = sum, data = xy)$Freq

ggplot(xy, aes(x = Var2, y = rel.freq, fill = Var1)) +
  theme_bw() +
  scale_fill_brewer(palette = "Set1") +
  geom_bar(stat = "identity", position = "dodge")

enter image description here