查看原文
其他

可视化 | ggparliament包绘制议会图

大邓 大邓和他的Python
2024-09-09

ggparliament

ggparliament 包是为了使用 ggplot2 创建议会图表而开发的。该库还提供了一个示例数据集,其中包含了多个国家的选举数据。

在本教程中,我们将使用来自2016年俄罗斯国家杜马选举的数据来进行所有示例。需要注意的是,根据每个国家的不同,议会的类型也会不同,因此您应该根据您想要显示的数据使用相应的类型。可用的类型包括 "semicircle"(美国、法国、西班牙等)、"circle"、"opposing_benches"(英国)、"classroom" 和 "horsehoe"(澳大利亚、新西兰)。

这段文字描述了 ggparliament 包的功能以及如何在教程中使用2016年俄罗斯国家杜马选举的数据来进行演示。同时,它还提到了不同国家使用不同类型的议会图表,需要根据数据选择相应的类型。



一、准备数据

library(ggparliament)
library(tidyverse)

# Data
ru <- election_data %>%
  filter(country == "Russia" & year == 2016)

ru

二、议会图

2.1 半圆形议会图

要在 ggplot2 中使用 ggparliament 创建议会图表,您需要将数据转换为该软件包可以理解的格式。为此,您可以使用 parliament_data 函数,其中您可以指定原始数据集、议会类型及其行数、各党派的席位数以及其他参数。

然后,您可以将数据传递给 ggplot2,并使用 geom_parliament_seats() 函数。

请注意,该软件包提供了一个名为 theme_ggparliament 的自定义主题。

library(ggparliament)
library(tidyverse)

ru_semicircle <- parliament_data(election_data = ru,
                                 type = 'semicircle',#半圆形议会图
                                 parl_rows = 10#议会图席位行数
                                 party_seats = ru$seats #各党派席位
                                )

ggplot(ru_semicircle, aes(x = x, y = y, colour = party_short)) +
  geom_parliament_seats() + 
  theme_ggparliament() +
  draw_totalseats(n = 450, type = "semicircle") +
  labs(title = "Russia, 2016") +
  scale_colour_manual(values = ru_semicircle$colour, 
                      limits = ru_semicircle$party_short) +
  coord_fixed()  # 设置纵横比为1:1



2.2 圆形议会图

如果你想要创建其他类型的议会,只需将不同的类型传递给 parliament_data 函数的 type 参数。在下面的示例中,我们正在创建一个圆形议会,这在一些国家中被使用。

library(ggparliament)
# install.packages("tidyverse")
library(tidyverse)

ru_circle <- parliament_data(election_data = ru,
                             type = "circle",
                             parl_rows = 10,
                             party_seats = ru$seats)

ggplot(ru_circle, aes(x = x, y = y, colour = party_short)) +
  geom_parliament_seats() + 
  theme_ggparliament() +
  draw_totalseats(n = 450, type = "semicircle") +
  labs(title = "Russia, 2016") +
  scale_colour_manual(values = ru_circle$colour, 
                      limits = ru_circle$party_short) +
  coord_fixed()  # 设置纵横比为1:1


三、进一步自定义

该软件包提供了其他功能来自定义议会图表,例如标记政党、绘制多数门槛线、突出显示执政党等。

在以下示例中,我们将使用半圆图表,但您也可以将相同的函数用于其他类型的议会。

3.1 突出显示执政党并绘制多数门槛

geom_highlight_government 函数允许突出显示政府或控制立法机构的政党。此外,draw_majoritythreshold 函数允许添加表示多数门槛的线条。

library(ggparliament)
library(tidyverse)

ru_semicircle <- parliament_data(election_data = ru,
                                 type = "semicircle",
                                 parl_rows = 10,
                                 party_seats = ru$seats)

ggplot(ru_semicircle, aes(x = x, y = y, colour = party_short)) +
  geom_parliament_seats() + 
  geom_highlight_government(government == 1) +
  draw_totalseats(n = 450, type = "semicircle") +
  draw_majoritythreshold(n = 225, label = TRUE, type = "semicircle") +
  theme_ggparliament() +
  labs(title = "Russia, 2016") +
  scale_colour_manual(values = ru_semicircle$colour, 
                      limits = ru_semicircle$party_short) +
   coord_fixed() 


3.2 议会柱状图

您还可以使用 geom_parliament_bar 函数添加一个议会柱状图,显示各政党在议会中的席位比例,如下所示。

library(ggparliament)
library(tidyverse)

ru_semicircle <- parliament_data(election_data = ru,
                                 type = "semicircle",
                                 parl_rows = 10,
                                 party_seats = ru$seats)

ggplot(ru_semicircle, aes(x = x, y = y, colour = party_short)) +
  geom_parliament_seats() + 
  geom_highlight_government(government == 1) +
  geom_parliament_bar(colour = colour, party = party_long, label = TRUE) +
  draw_totalseats(n = 450, type = "semicircle") +
  draw_majoritythreshold(n = 225, label = TRUE, type = "semicircle") +
  theme_ggparliament() +
  labs(title = "R") +
  scale_colour_manual(values = ru_semicircle$colour, 
                      limits = ru_semicircle$party_short) +
  coord_fixed() 




精选内容

96G数据集 | 2亿条中国大陆企业工商注册信息

70G数据集 | 3571万条专利申请数据集(1985-2022年)

数据集 | 2006年-2022年企业社会责任报告

93G数据集 | 中国裁判文书网(2010~2021)

数据集 | 2001-2022年A股上市公司年报&管理层讨论与分析

数据集 | 3.9G全国POI地点兴趣点数据集

数据集 | 2014年-2022年监管问询函

CAR2023 | 文本分析在会计中的应用

管理世界 | 使用文本分析词构建并测量 短视主义

管理世界 | 使用 经营讨论与分析 测量 企业数字化指标

管理世界 | 用正则表达式、文本向量化、线性回归算法从md&a数据中计算 「企业融资约束指标

管理世界 | 政府与市场心理因素的经济影响及其测度

文本分析 | 中国企业高管团队创新注意力(含代码)

金融研究 | 使用Python构建「关键审计事项信息含量」

PNAS | 14000+篇心理学顶刊论文可复现性调研(含代码)

网络爬虫 | 使用Python采集B站弹幕和评论数据

网络爬虫 | 使用Python披露采集 Up 主视频详情信息

可视化 | 绘制《三体》人物关系网络图

可视化 | 99-21年地方政府报告关键词变化趋势

可视化 | Netflix 数据可视化最佳实践

使用 Word2Vec 和 TF-IDF 计算五类企业文化

采购合同数据集 | 政府采购何以牵动企业创新

实验数据 | 194城市楼市政策梳理(2010-2022)

数据集 | 07-21年上市公司「委托贷款公告」

单个csv文件体积大于电脑内存,怎么办?

高管数据 | 使用pandas对xlsx中的简介字段做文本分析

继续滑动看下一个
大邓和他的Python
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存