根据一个图中的不同列制作两个 geom_bar() 图

Make two geom_bar() plots base on different columns in one plot

提问人:Aleksandra 提问时间:5/29/2020 更新时间:5/29/2020 访问量:104

问:

我有一个数据框,如下所示:

 Year     Women       Men
1 2013    145169      889190
2 2014    119064      849778
3 2015    210107     1079592
4 2016    221217     1427639
5 2017    205000     1692592
6 2018    273721     1703456
7 2019    434407     2010493

我想做一个geom_bar,其中 x 是一年,每年有两个小节代表女性和男性的数字。我找到了一个解决方案,这个表应该看起来不同,但我想知道是否有选择使用这个。感谢您的任何帮助:)

r ggplot2 几何棒

评论

0赞 Roman 5/29/2020
到目前为止,你尝试了什么?你有代码吗?Pleae 也在问题中包含代码,并在 google 上搜索“ggplot2 数据长到宽和堆叠的条形图”
0赞 StupidWolf 5/29/2020
它是从宽到长的枢轴......像下面的答案应该没问题。你不需要整个 Tidyverse 包。tidyr 和 ggplot2 就足够了
0赞 UseR10085 5/29/2020
这回答了你的问题吗?ggplot 中的分组条形图
0赞 Aleksandra 5/29/2020
非常感谢您的帮助,下面的答案非常有效。

答:

1赞 UseR10085 5/29/2020 #1

您可以使用以下代码

library(tidyverse)

df %>% 
      pivot_longer(cols = -c(Year,Sl), values_to = "Value", names_to = "Name") %>% 
      ggplot(aes(x = Year, y = Value, fill = Name))+geom_col(position = "dodge")

enter image description here

数据

df = structure(list(Sl = 1:7, Year = 2013:2019, Women = c(145169L, 
119064L, 210107L, 221217L, 205000L, 273721L, 434407L), Men = c(889190L, 
849778L, 1079592L, 1427639L, 1692592L, 1703456L, 2010493L)), class = "data.frame", row.names = c(NA, 
-7L))