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")
我想制作一个图来显示人口的分布(直方图),由女性和男性组成 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")