谁在管理我们的国家?使用 R 语言分析全国人大代表数据(ggplot2版本)

最近各大新闻媒体都在铺天盖地报道有关两会的新闻,我们也来蹭一下热度,虽然找不到今年人大代表的相关数据,但是我们可以从这个网站: https://news.cgtn.com/event/2019/whorunschina/index.html 获取 2019 年的两会人大代表数据。数据我们已经爬好放在本文的附件中了。

读取数据

首先读取数据:

library(tidyverse)
library(hrbrthemes)
# 设置 ggplot2 绘图主题,注意这里的 cnfont 是在 Profile 文件里面设置的字体,如果提示不存在 cnfont 可以把 `base_family = cnfont` 参数删除。
theme_set(theme_ipsum(base_family = cnfont))

# 读取数据
df <- read_csv('NPC.csv')
# 概览数据:
glimpse(df)

总人数

df %>%
count() %>%
pull()

#> [1] 2975

计算每个代表团的总人数:

df %>%
count(Delegation)

我手动把这个结果翻译了一下:

read_csv("delegation2.csv") %>%
transmute(
delegation = `代表团`,
count = n
) %>%
mutate(
delegation = if_else(delegation == "中国人民解放军武警部队", "中国人民解放军\n武装警察部队", delegation)
) -> delegation

然后我们绘制一幅华夫图展示这个结果,waffle 包返回的是一个 gg 对象,所以我们可以在其上直接添加 ggplot2 包的操作:

各个代表团的人数

我们还可以把人数最多的 9 个代表团拿出来比较:

人数最多的九个代表团

性别、年龄分布

性别年龄分布我们可以一起来看:

性别年龄分布

可以看出,60 后是 NPC 的核心,90 后中女性的数量多于男性。人大代表们的平均年龄是 53.77 岁。其中,1672 名代表出生于 20 世纪 60 年代,占总数的一半以上。另外我们还可以看到,代表们越年轻,性别比例越均衡。

是不是觉得女性的比例很少?实际上近几届人大会议上女代表的比例正在稳步上升:

女性代表的比例变化

民族分布

中国是个有着 56 个民族的多民族国家,55个少数民族 + 汉族,那么人大代表中有多少个民族呢?

df %>%
count(民族)

#> # A tibble: 56 x 2
#> 民族 n
#> * <chr> <int>
#> 1 阿昌族 1
#> 2 白族 8
#> 3 保安族 1
#> 4 布朗族 1
#> 5 布依族 7
#> 6 藏族 33
#> 7 朝鲜族 12
#> 8 达斡尔族 1
#> 9 傣族 5
#> 10 德昂族 1
#> # … with 46 more rows

也就是说每个民族都至少有一个代表,可以用一幅树图展示各个民族代表的比例:

全国人大代表的民族分布

其中汉族人 2538 人,占总数的 85%。

学历分布

不用想就知道人大代表们的学历应该都挺高的:

全国人大代表的学历分布

如果我们只关心男女比例,而不关心各种学历的人数关系,可以使用 100% 填充模式:

全国人大代表的学历分布

学科分布

全国人大代表的专业背景怎么样?根据中国教育部的专业分类,管理科学,哲学,文学,历史,教育,艺术,经济,法律和军事科学属于人文社会科学 ; 而科学,工程,农业和医学是自然科学。

学科分布

党派分布

df %>%
count(党派) %>%
rename(人数 = n) %>%
knitr::kable(align = "c")
党派 人数
九三学社 64
民革 44
民主建国会 57
民主同盟 58
农工党 54
台盟 11
无 423
致公党 38
中共 2172
中国民主促进会 54

可以绘制一幅冲积图来展示各个代表团的党派分布:

各个代表团的党派分布

代表们籍贯的地理分布图

可以使用 ggplot2 + sf 绘制:

代表们籍贯的地理分布图

点击这里跳转到 RStata 短书平台获取附件:谁在管理我们的国家?使用 R 语言分析全国人大代表数据(ggplot2版本)

评论