Geom bar - 躲避由两个不同变量组成的群体

Geom bar - dodging a population consisting of two different variables

我想制作一个图来显示人口的分布(直方图),由女性和男性组成 geom_bar 关于年龄。

如果它看起来像这样就好了:

这是我的数据:

> head(Oriflame)
# A tibble: 6 x 3
  Age   Females Males
  <chr>   <dbl> <dbl>
1 14-20   11655  1014
2 20-25   23977  2372
3 25-30   22685  2243
4 30-40   42855  4761
5 40-50   32848  3649
6 50-60   18295  2261
7 60-70   11868  1467
8 70+     5198   778

所以,基本上,我创建了以下两个图:

ggplot(Oriflame, aes(x=Oriflame$Age, y=Oriflame$Females)) + geom_bar(stat = "identity")

ggplot(Oriflame, aes(x=Oriflame$Age, y=Oriflame$Males)) + geom_bar(stat = "identity")

我只想将它们 merge/overlap 放在一个地块上,fill/colour 区分女性和男性。但是我不知道怎么躲。

解决方案相对简单:将数据从宽格式转换为长格式:

df <- reshape2::melt(Oriflame)

并将你的绘图中的填充设置为 variable,现在正在对性别进行编码。然后,您在 geom_col() 中使用 position = "dodge",即 shorthand 用于 geom_bar(stat = "identity")

ggplot(df, aes(Age, value, fill = variable)) +
  geom_col(position = "dodge")