首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ggplot2叠加条形图的故障排除

ggplot2叠加条形图的故障排除
EN

Stack Overflow用户
提问于 2016-07-22 10:06:32
回答 1查看 139关注 0票数 0

我正试图创建一个堆叠的身份图,但是ggplot2一直将我的数据集中在一起。

它不是为每个扇区提供每个类别的叠加图,而是将directindirect.downindirect.up类别聚合在一起。

代码语言:javascript
复制
test.df = data.frame(scenario=(c("s1", "s1", "s1", "s2", "s2", "s2", "s3", "s3", "s3",
                             "s1", "s1", "s1", "s2", "s2", "s2", "s3", "s3", "s3",
                             "s1", "s1", "s1", "s2", "s2", "s2", "s3", "s3", "s3")),
              sector=(c("Agriculture", "Manufacturing", "Services", "Agriculture", "Manufacturing", "Services", "Agriculture", "Manufacturing", "Services",
                        "Agriculture", "Manufacturing", "Services", "Agriculture", "Manufacturing", "Services", "Agriculture", "Manufacturing", "Services",
                        "Agriculture", "Manufacturing", "Services", "Agriculture", "Manufacturing", "Services", "Agriculture", "Manufacturing", "Services" )),
              loss=(runif(27,0,1000)), shock=(c("direct", "indirect.up", "indirect.down","direct", "indirect.up", "indirect.down","direct", "indirect.up", "indirect.down",
                        "direct", "indirect.up", "indirect.down","direct", "indirect.up", "indirect.down","direct", "indirect.up", "indirect.down",
                        "direct", "indirect.up", "indirect.down","direct", "indirect.up", "indirect.down","direct", "indirect.up", "indirect.down")))

library(ggplot2)

ggplot(test.df, aes(x=sector, y=loss)) + geom_bar(stat = "identity", aes(fill=shock))  + facet_wrap(~ scenario) + coord_flip()

我希望每个部门的冲击都是这样的:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-22 10:59:34

这是因为在您的示例数据中,每个sector只有一种与其相关联的shock

代码语言:javascript
复制
table(test.df$sector, test.df$shock)

#              direct indirect.down indirect.up
# Agriculture        9             0           0
# Manufacturing      0             0           9
# Services           0             9           0

添加一些数据以在sectorshock之间创建更多关联:

代码语言:javascript
复制
df2 <- test.df

df2$shock[df2$shock == "indirect.down"] <- "indirect.up"
df2$shock[df2$shock == "direct"] <- "indirect.down"

test.df <- rbind(test.df, df2)

table(test.df$sector, test.df$shock)

#               direct indirect.down indirect.up
# Agriculture        9             9           0
# Manufacturing      0             0          18
# Services           0             9           9

现在测试您的代码:

代码语言:javascript
复制
library(ggplot2)

ggplot(test.df, aes(x=sector, y=loss)) +
 geom_bar(stat = "identity", aes(fill=shock))  +
 facet_wrap(~ scenario) + coord_flip()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38523689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档