【问题标题】:How to draw a stacked bar chart in R [duplicate]如何在R中绘制堆积条形图[重复]
【发布时间】:2018-05-14 15:23:56
【问题描述】:

我使用代码dput(head(Refugees_demographics, 2))

下面是示例数据集:

structure(list(Year = c(2006, 2007), `Female 0-4` = c(0, 3), 
    `Female 5-11` = c(0, 0), `Female 12-17` = c(140, 36), `Female 18-59` = c(1118, 
    519), `Female 60+` = c(121, 85), `F: Total` = c(1379, 643
    ), `Male 0-4` = c(0, 7), `Male 5-11` = c(6, 1), `Male 12-17` = c(152, 
    56), `Male 18-59` = c(1323, 870), `Male 60+` = c(595, 88), 
    `M: Total` = c(2076, 1022)), row.names = c(NA, -2L), class = c("tbl_df", 
"tbl", "data.frame"))

我想得到下面的堆积条形图。 (如照片)

x 轴是年份,y 轴是难民人数。每年都会有两个堆叠的酒吧。一种用于男性,一种用于女性。在每个条中,按年龄堆叠,即女性 0-4、女性 5-11...等。

我尝试使用以下代码,但它不起作用,我也不知道如何按年份对女性和男性进行分组。

ggplot() +
  geom_bar(aes(y = Refugees_demographics$`Female 0-4`,
               x = Refugees_demographics$Year, fill = product),
           data = Refugees_demographics, stat="identity")

如果有人能帮忙,我将不胜感激!

提前谢谢你。

【问题讨论】:

  • 请不要链接到数据:链接过时了,当他们这样做时,这个问题完全变成了unreproducible。通常最好 (a) 包含您的实际数据的代表性样本; (b) 随机生成数据并提供代码(set.seed)自己制作;或 (c) 使用 base-R 数据集(例如,mtcarsirisggplot2::diamonds 等)。
  • 但是,在 StackOverflow 中搜索 [r] [ggplot2] stack bar 应该可以满足您的需求。
  • stackoverflow.com/q/6644997/3358272 的可能重复项(如果我错了,请不要关闭它)
  • @r2evans,对此感到抱歉。这是我第一次在这里问这个问题。我将数据集更改为示例数据集!
  • 别担心,苏打水。另一件有帮助的事情是阅读StackOverflow markdown formatting,这可以更容易区分(视觉上)“对话”和“data/code”。在这种情况下,只需突出显示 structure(...) 代码并点击 Ctrl-K 即可。 (不幸的是,kbd 标签不适用于 SO ... :-(

标签: r ggplot2


【解决方案1】:

您需要在创建视觉对象之前转换数据。请参阅下面的代码。这里发生了许多事情,您将不得不解决。例如,我从您的原始数据中删除了总列,更新了年份列,并更新了列名。

require(tidyverse)
require(lubridate)

df$Year <- year(as.Date(as.character(df$Year), "%Y"))

colnames(df) <- sub("\\.", "_", colnames(df))

df2 <- df %>%
  gather("Variable", "Total", 2:13) %>%
  separate(variable, c("Gender", "Age"), "_" ) %>%
  filter(age != ".Total")

df2$Age <- gsub("\\.", "-", df2$Age)

ggplot(df2, aes(Gender, Total, fill = Age)) + geom_col() + facet_grid(~Year)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    • 2010-11-28
    • 2012-09-17
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多