r - 没有将 y 轴值加在一起的堆积条形图 (ggplot2)
问题描述
尝试创建一个堆叠条形图,其中 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")
当前绘图输出 y 轴总和为 600 m 的数据,而最大值应仅为 120 m。
解决方案
好事是我不认为是你的代码给你带来了麻烦。相反,我认为您可能需要考虑另一种显示数据的方式。
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 轴上使用 Abundance 和 Depth,然后填写 Phylum 类别来获得更好的信息。
推荐阅读
- identity - 为身份服务器外部身份提供者请求添加中间端点
- wordpress - Woocommerce 产品出现在错误的类别中
- java - 双重检查锁定的声纳立方体错误
- amazon-web-services - 默认密码新 AWS 组织账户
- oracle-apex - 仅在调试模式下检索数据?
- python - 使用 QDataWidgetMapper 在 QTextBrowser 中显示纯文本
- swift - Swift 在另一个视图之上添加一个透明和模糊的视图
- java - 将子类转换为超类时抛出 java.lang.classCastException
- wpf - WPF CustomControl 可覆盖的默认样式
- python - 从满足某些条件的字典中返回单个值