暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

R语言绘图|人口金字塔图

955
点击关注了解更多哦

本文主要介绍如何利用R语言绘制人口金字塔图。所使用的package主要包括ggplot2[1]ggpol[2]dplyr[3]等。绘制图形如下图所示:

1.数据获取

福建省统计年鉴(2022)[4]获取2021年福建省人口年龄构成数据信息,绘制人口结构金字塔图。数据信息如下图所示:

2.数据读入

library(ggpol)
library(ggplot2)
library(dplyr)

data <- readxl::read_xlsx("data.xlsx", sheet = 2)
data
# A tibble: 17 x 4
#   Group       Total  Male Female
#   <chr>       <dbl> <dbl>  <dbl>
# 1 Aged 0-4     5.53 2.99   2.54 
# 2 Aged 5-9     7.37 4.01   3.36 
# 3 Aged 10-14   6.17 3.34   2.83 
# 4 Aged 15-19   4.99 2.69   2.30 
# 5 Aged 20-24   4.81 2.58   2.23 
# 6 Aged 25-29   6.26 3.36   2.89 
# 7 Aged 30-34   9.63 4.95   4.68 
# 8 Aged 35-39   8.34 4.28   4.07 
# 9 Aged 40-44   6.99 3.58   3.41 
#10 Aged 45-49   8.40 4.30   4.10 
#11 Aged 50-54   8.26 4.20   4.06 
#12 Aged 55-59   7.40 3.74   3.66 
#13 Aged 60-64   4.55 2.28   2.27 
#14 Aged 65-69   4.54 2.21   2.33 
#15 Aged 70-74   2.91 1.43   1.49 
#16 Aged 75-79   1.80 0.873  0.931
#17 80 and over  2.04 0.877  1.16 

# 数据转换
mydata <- data %>% select(1, 3, 4) %>% 
  reshape2::melt(id.vars = "Group", variable.name = "Sex", value.name = "Prop")
# 为对称显示,将其中一半设置取负数
mydata$Prop <- ifelse(mydata$Sex == "Male", mydata$Prop * -1, mydata$Prop)
# 标签文本
mydata$label <- abs(mydata$Prop) %>% round(digits = 2)
head(mydata)
#       Group  Sex    Prop label
#1   Aged 0-4 Male -2.9936  2.99
#2   Aged 5-9 Male -4.0078  4.01
#3 Aged 10-14 Male -3.3450  3.35
#4 Aged 15-19 Male -2.6868  2.69
#5 Aged 20-24 Male -2.5756  2.58
#6 Aged 25-29 Male -3.3645  3.36

3.图形绘制

ggplot(mydata, aes(Prop, Group, fill = Sex)) + 
  geom_col(width = 0.6, color = "black") + 
  geom_text(aes(label = label), size = 4) + 
  facet_share(~Sex, scales = "free_x", reverse_num = TRUE) + 
  #ggtitle("福建省2021年人口年龄构成") + 
  labs(x = "Prop(%)"
       subtitle = "WhChat:日常分享的小懒猫",
       caption = "Source:福建省统计年鉴(2022)") + 
  scale_fill_brewer(palette = "Set1"  ) + 
  theme_bw(base_size = 15) + 
  theme(axis.title.y = element_blank(),
        plot.title = element_text(hjust = 0.5),
        axis.text = element_text(colour = "black"))

4.其他

其他绘图方法可进一步关注公众号【日常分享的小懒猫】


如有帮助请多多点赞哦!

参考资料

[1]

ggplot2: https://cran.r-project.org/web/packages/ggplot2/index.html,

[2]

ggpol: https://cran.r-project.org/web/packages/ggpol/index.html,

[3]

dplyr: https://cran.r-project.org/web/packages/dplyr/index.html,

[4]

福建省统计年鉴(2022): https://tjj.fujian.gov.cn/xxgk/ndsj/


文章转载自日常分享的小懒猫,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论