r - R中Y轴上有两个变量的频率分布直方图
问题描述
我得到了这个数据框,它同时是一个频率分布,并被赋予了绘制整个人口年龄分布的直方图的任务,并在图中添加了男性和女性的个人资料。我需要实现的是像这样的直方图,例如:男性和女性轮廓重叠的两变量频率条形图,但在 x 轴上有 AgeClasses。这是我的代码:
AgeClasses <- c('0-9','10-19','20-29','30-39','40-49', '50-59', '60-69','70-79','80-89', '90-99')
Frequencies <- c(1000,900,800,700,600,500,400,300,200,100)
SexRatioFM <- c(0.4,0.42,0.44,0.48,0.52,0.54,0.55,0.58,0.6,0.65)
df$Females <- c(SexRatioFM*Frequencies)
df$Males <- c(Frequencies-Females)
library(ggplot2)
ggplot(df) +
geom_bar(mapping = aes(x = AgeClasses, y = Females), stat = "identity")
我非常感谢您在解决此任务方面的帮助。
解决方案
这种类型的图是堆积条形图。要使用 ggplot2 最轻松地生成它,您需要将数据转换为长格式,以便一列包含男性和女性的所有计数,另一列包含带有标签“男性”和“女性”的因子变量。您可以使用以下方法执行此操作tidyr::pivot_longer
:
library(ggplot2)
library(tidyr)
pivot_longer(df, cols = c(Females, Males)) %>%
ggplot() +
geom_col(mapping = aes(x = AgeClasses, y = value, fill = name)) +
labs(x = "Age", y = "Count", fill = "Gender")
推荐阅读
- node.js - 从 body-parser 传递参数以获取 JSON 数据的问题
- android - 仅在 recyclerview 上的滚动条边距(而不是 recyclerview)
- r - R 如果三个或更多值是 NA,则删除行
- .net - 当流调用循环很大时,Grpc 双向流被对等端终止?
- php - 使用 livewire 从 URL 获取类型参数值
- reactjs - React路由器:使用url参数重定向?
- docker - nginx server block + docker,前后如何通信
- java - 责任链 lambda 函数
- firebase - 事务中单个文档的多次更新是否会在 Firestore 中为每个更新分别产生写入成本
- django - 社交登录后将 Django 重定向到自定义页面,然后使用 ?next 重定向到上一页