题目:
近年随着女性在社会生活中的参与程度的提高,妇女组织、女选民、女议员和女政治领袖成为了政治活动中不可忽视的力量。在这一题目中,我们将通过女性在各国议会中的人员比重,侧面分析这一现象。请到 worldbank下载本题所使用的数据,由于部分数据缺失,建议在以下各题中均使用 2008 及以后年份的数据。
1. 请统计数据中每一年份的所有国家\地区的平均女性议员比例,并根据这一统计结果绘制折线统计图(如数据页面中 line 视图),并描述你在这一折线图中能够得到什么样的结论。
2. 请任选一个年份,在世界地图上使用颜色对各国女性议员比例进行编码(如数据页面中map 视图),并描述你在这一地图数据中能够得到怎样的结论。(提示:对于 d3 等常用库,都可以找到集成了地图读取与渲染的较好类库。如果找不到相应类库,可以尝试手动解析并渲染地图文件,例如 nature-earth。解答这一问时请综合考虑第三问的需求。)
3. 在可视化中一个常见的技巧是使用图元(glyph)对可视化的目标数据进行隐喻。现实中,部分国家的议会内部经常采用下图所示的扇形结构。
基于这一事实,我们可以设计如下图所示的图元,表示某一国家议会中的女性议员的比例。
请在你第 2 问的可视化中使用这一图元,重新绘制这一地图,并讨论:你认为在这一图元中,表示男\女性议员的散点更适合左-右排布还是内-外排布?并简述理由。
4. 以上我们分析了“女性议员比例”这一单一变量的全球分布,这里我们将讨论社会经济环境对女性政治参与度的影响。请搜集任意一项社会经济数据(例如人均 GDP ,第三产业数据 等),自由组织可视化视图分析这一数据与女性议员比例的相关性,并给出你的分析结论。
Q1:
代码
library(ggplot2)
library(maps)
library(plyr)
setwd("yourpath")
########## Q1 ##########
dataByyr <- read.csv("seatbytyear.csv") # 08-17年世界平均女性议员比例数据
ggplot() + geom_line(data = dataByyr, aes(x = yr, y = seat))+scale_x_continuous(breaks=dataByyr$yr) +theme_bw()+
ylab("proportion %")+ggtitle("Proportion of seats held by women in national parliaments worldwide (%)")
数据

结果

Q2
代码
######### Q2 ##########
world_map = map_data("world")
df <- read.csv("data17.csv") # 17年各地区女性议员比例数据和国土面积数据
worldMapdf = merge(world_map, df, by="region",all.x=TRUE)
worldMapdf <- worldMapdf[order(worldMapdf[,"order"]),]
p1 <- ggplot() + geom_polygon(data = worldMapdf, aes(x=long, y=lat,group=group,fill=YR2017),col="white")+scale_fill_continuous(high = "#132B43", low = "#56B1F7",name="Proportion %")
p1 + ggtitle("Proportion of seats held by women in national parliaments Map")
数据

结果

Q3
代码
######## Q3 ###########
dd <- ddply(world_map,.(region),summarize,long=mean(long),lat=mean(lat))
dd <- merge(dd,df,by="region",all.x = TRUE)
dds = na.omit(dd)
dds <- subset(dds,Area>1500000) # 过滤面积小于1500000km.sq
nrows <- 5
portion <- 0.4
polar1 <- NULL
### 参考ggparliament包实现
for(i in 1:nrow(dds)){
ratio <- dds$YR2017[i]
women <- round(ratio)
men = 100 - round(ratio)
seats1 <- c(women,men)
party <- factor(c("W", "M"), levels = c("W", "M"))
polar <- structure(list(azimuth = numeric(sum(seats1)),
radius = numeric(sum(seats1))),
class = "data.frame",
row.names = seq_len(sum(seats1)))
nperrow <- c(20,20,20,20,20)
ring <- rep(seq_len(nrows) + 3L, times = nperrow)
polar[["radius"]] <- head(ring, nrow(polar))
# x position within ring
pos <- unlist(lapply(nperrow, function(x) seq(0, portion, length.out = x)))
polar[["azimuth"]] <- head(pos, nrow(polar))
polar <- polar[order(polar$azimuth, polar$radius),]
polar[["party"]] <- rep(levels(party), seats1)
polar$lat <- dds$lat[i]
polar$long <- dds$long[i]
polar$region <- dds$region[i]
polar$xx <- -cos(2*pi*polar$azimuth+0.1*pi)*polar$radius
polar$yy <- sin(2*pi*polar$azimuth+0.1*pi)*polar$radius
polar1 <- rbind(polar1,polar)
}
polar1$xxx <- polar1$xx + polar1$long
polar1$yyy <- polar1$yy + polar1$lat
p <- ggplot() + geom_polygon(data=world_map,aes(x=long, y=lat,group=group), col = "white", fill = "black") + theme_bw()
p1 <- p + geom_point(data = polar1,aes(x = xxx, y = yyy, colour = party),size=0.1) + scale_color_manual(values = c("W" = "purple", "M" = "grey")) + theme(legend.position='none')
p1 + geom_text(data=dds,aes(x=long,y=lat+2,label = paste0(YR2017,"%","\n",code)),size=1.5,col = "purple") + ggtitle("Proportion of seats held by women in national parliaments Map")
结果

Q4
代码
############### Q4 ##############
df4 <- read.csv("gdpVSpar.csv") # 16年gdp和议会比例数据
df4 <- merge(dd,df4,by="code",all.x = TRUE)
df4 <- na.omit(df4)
p <- ggplot() + geom_point(data = df4, aes(x=GDP2016,y=PAR2016))+geom_smooth(data = df4, aes(x=GDP2016,y=PAR2016),method = "lm")+ ylab("PAR 2016 %") + xlab("GDP US$") + scale_x_log10() + theme_bw()
p+ ggtitle("Proportion of Women parliaments seats vs GDP in 2016")
summary(lm(PAR2016~log(GDP2016),data = df4))
数据

结果

网友评论