【问题标题】:Create a histogram for age distribution that has different colors for sex [duplicate]为具有不同性别颜色的年龄分布创建直方图[重复]
【发布时间】:2019-11-23 09:58:48
【问题描述】:

我正在尝试在直方图中可视化人口统计数据。

我想要一个直方图: -年龄组(20-25、25-30、...) - 对于每个年龄组,两个条形(女性、男性)具有不同的颜色(红色、蓝色)。

我尝试了很多东西,比如为性创建单独的数据框:

hist(dem.data.female$age,col="red"...)

hist(dem.data.male$age, col= "blue", add= T....)

我收到一个直方图,但条形图相互重叠...我也尝试安装 easy.ggplot2 包,但我的 R 程序似乎没有它。

【问题讨论】:

  • 请编辑以适应这些standards。根据经验,如果您在将代码复制并粘贴到新的 R 会话中时无法获得结果,那么您的问题需要进行编辑,因为除非您的问题是可重现的,否则用户无法提供帮助。在最坏的情况下,问题通常是关闭的。这也不清楚:我也尝试安装 easy.ggplot2 包,但我的 R 程序似乎没有。

标签: r histogram


【解决方案1】:

提供可重现的数据集。在这里,有来自两种性别的 52 个“随机”观察值,并带有一个额外的变量来指示性别。

  set.seed(123)
  age <- sample(18:30, 52, T)
  sex <- sample(1:2, 52, T)
  sex <- factor(sex)
  grp <- cut(age, breaks = seq(18, 30, 2), include.lowest = TRUE)
  df <- data.frame(age, sex, grp)

我不确定easy.ggplot2,但我知道ggplot2lattice 可以满足您对多元数据可视化的需求。

  library(lattice)
  library(ggplot2)

对于lattice,先聚合数据是常用策略

  res <- aggregate(age ~ grp + sex, df, length)
  barchart(age ~ grp, groups = sex, res)

对于ggplot2,聚合是内置在几个“geoms”中的。第一个使用连续变量age 作为 x 轴。

  ggplot(df, aes(x = age, fill = sex))
  + geom_histogram(bins = 6, position = "dodge")

  ggplot(df, aes(x = grp, fill = sex))
  + geom_bar(position = "dodge")

第二个使用离散(因子)变量grp 作为 x 轴。注意两个ggplot 函数的细微差别。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-21
    • 2020-02-15
    • 2019-02-20
    • 2018-08-23
    • 2021-11-04
    • 2013-10-08
    • 1970-01-01
    • 2017-07-03
    相关资源
    最近更新 更多