不将y轴值相加的堆叠条形图(ggplot2)

时间:2019-10-30 02:57:28

标签: r ggplot2 bar-chart

尝试创建一个堆叠的条形图,在y轴上具有深度(以米为单位),在x轴上具有不同的类别,然后填充丰度值。但是,ggplot2会不断求和所有深度值(a + b + c),以使y轴不正确。

我知道我需要指定geom_bar(stat =“ identity”),但这似乎与y轴混淆了,因为所有组的值都相同,但丰度却不同。

##Data: 
Phylum  Depth   Abundance
Cnidaria    110 6
Cnidaria    90  12
Cnidaria    70  1
Cnidaria    50  4
Cnidaria    30  3
Cnidaria    20  1
Cnidaria    120 13
Cnidaria    80  3
Cnidaria    60  12
Arthropada  110 105
Arthropada  90  493
Arthropada  70  23
Arthropada  50  3
Arthropada  30  10
Arthropada  20  42
Arthropada  120 57
Arthropada  80  3
Arthropada  60  7

##Current plot: 
ggplot(data = data, aes(x = Phylum, y = Depth, fill = Abundance)) +
  geom_bar(stat = "identity")

当最高值应仅为120 m时,当前图输出y轴数据总计为600 m。

1 个答案:

答案 0 :(得分:0)

好消息是,我认为不是您的代码给您带来麻烦。相反,我认为您可能要考虑另一种显示数据的方式。

data = data.frame("Phylum" = c("Cnidaria", "Cnidaria", "Cnidaria", "Cnidaria","Cnidaria", "Cnidaria", "Cnidaria", "Cnidaria", "Cnidaria", "Arthropada", "Arthropada", "Arthropada", "Arthropada", "Arthropada", "Arthropada", "Arthropada", "Arthropada", "Arthropada"), "Depth" = c(110, 90, 70, 50, 30, 21, 120, 80, 60, 110, 90, 70, 50, 30, 20, 120, 80, 60), "Abundance" = c(6, 12, 1, 4, 3, 1, 13, 3, 12, 105, 493, 23, 3, 10, 42, 57, 3, 7))

调整y轴的原因是因为这些值基本相同,这由类别的平均值表示:

aggregate(.~Phylum, data, mean)

      Phylum    Depth Abundance
1 Arthropada 70.00000 82.555556
2   Cnidaria 70.11111  6.111111

当您切换“深度”和“丰度”时,将获得与您期望的图更相似的图:

p = ggplot(data = data, aes(x = Phylum, y = Abundance, fill = Depth))
p+geom_bar(stat = "identity")

您可能要考虑其他情节。例如,您可以通过在x轴或y轴上使用“丰度和深度”,然后填写“ Phylum”类别来获得更好的信息。