library(gapminder)
library(ggiraphExtra)
library(dplyr)
library(ggplot2)
# 使用 gapminder 的 2007 年数据
df_continent <- gapminder %>%
filter(year == 2007) %>%
group_by(continent) %>%
summarise(pop = sum(pop)) %>%
mutate(pop_percent = pop / sum(pop) * 100)
DT::datatable(df_continent,rownames = FALSE)数据可视化期末报告
1 报告要求
期末实验报告由5章节5个图形组成,每个章节需要作一个图形。
每个章节选择作什么图自主选择,作图前补充完整图形标题名称,例如:图形1——多变量条形图。
案例数据自主收集,不同章节可以公用一个数据集。但同学间不允许使用相同数据集。
每个章节的数据集合需要通过
datatable函数展示,并简要解释数据来源和变量意义。每个输出图形后需要对图形作简要解读,最少需针对图形提出一个观点。
渲染html文件保留代码展示,6月22日前将发布网址提交至共享文档
“8、期末报告”列中。评分标准:
每章节图形各20分
能有效输出图形和合理解释75%
数据独特性强10%
图形个性化强15%
2 类别数据可视化
2.1 案例数据解释与展示
- 使用 gapminder 数据集,由世界银行(World Bank)、联合国等权威机构整理,经瑞典统计学家 Hans Rosling 推广,用于全球发展数据分析。覆盖 1952-2007 年全球 142 个国家的人口、GDP、预期寿命等指标,是社会科学研究的经典数据。本次取pop数据也就是各州人口总数对各大洲人口占比进行分析。
2.2 图形1——饼环图
p1<-ggDonut(df_continent,aes(donuts=continent,count=pop),
labelposition=1,labelsize=2.5, # 设置标签位置和大小
xmin=2,xmax=4, # 设置x的最小位置和最大位置
title="各大洲人口占比") # 设置标题
p1- 图形解读:由饼环图可知,亚洲(61%)人口远超其他大洲总和(美洲+非洲+欧洲+大洋洲=39%),可能导致的原因可能有:中国和印度作为人口大国,贡献了亚洲的主要人口基数;发展中国家生育率较高,而亚洲国家占全球发展中国家多数;此现象导致亚洲的资源分配压力较大,需承载更多粮食、能源等基本需求,人口基数大表层下的经济潜力也是巨大的,但也需应对相应出现的就业压力。通过数据可以解释全球人口结构的不均衡性及其潜在影响。
3 数据分布可视化
3.1 案例数据解释与展示
- 此数据为国家统计局官网上最新发布的有关于2024年我国城镇居民人均可支配收入的数据,居民人均可支配收入直接反映居民实际购买力,是衡量”获得感”的核心指标,可以映射城乡/区域差距映射发展不平衡问题,本次取urban_income_k也就是各城市人均可支配收入(千元)进行分析。
library(tidyverse)
library(e1071)
library(scales) # 用于格式化坐标轴
df_raw <- read_csv("分省2024年城镇人均可支配收入.csv")
df_income <- df_raw %>%
select(region = "地区", urban_income = "城镇居民人均可支配收入(元)") %>%
drop_na() %>%
mutate(urban_income_k = urban_income / 1000) # 转换为千元单位
DT::datatable(df_income,rownames = FALSE)3.2 图形2——单变量直方图
ggplot(df_income, aes(x = urban_income_k)) + # 关键修改:使用df_income
geom_histogram(
aes(y = ..density..),
bins = 12,
fill = "#66C2A5",
color = "white",
alpha = 0.8
) +
geom_density(color = "#FC8D62", linewidth = 1) +
geom_vline(
xintercept = mean(df_income$urban_income_k),
linetype = "dashed",
color = "#E41A1C",
linewidth = 0.8
) +
geom_point(
x = median(df_income$urban_income_k),
y = 0,
shape = 18,
size = 5,
color = "#377EB8"
) +
annotate(
"text",
x = mean(df_income$urban_income_k) + 5,
y = 0.02,
label = paste("均值 =", round(mean(df_income$urban_income_k), 1), "千元"),
color = "#E41A1C"
) +
annotate(
"text",
x = median(df_income$urban_income_k) + 5,
y = 0.015,
label = paste("中位数 =", round(median(df_income$urban_income_k), 1), "千元"),
color = "#377EB8"
) +
labs(
title = "2024年中国各省城镇居民人均可支配收入分布",
x = "收入(千元)",
y = "密度",
caption = "数据来源:国家统计局"
) +
scale_x_continuous(labels = label_number(suffix = "k")) +
theme_minimal() +
theme(plot.title = element_text(face = "bold"))- 图形解读:我国2024年城镇居民人均可支配收入主峰值出现在30-50k区间,覆盖大多数省份,存在显著右偏尾(60k+),反映高收入省份的拉动效应,且均值(40.8k)> 中位数(34.8k),差距达6k,说明前20%高收入省份显著拉高平均水平,半数省份收入低于34.8k,该分布直观揭示了我国城镇收入的”金字塔”结构,我国城镇差异化有待减小。
4 变量关系可视化
4.1 案例数据解释与展示
- 本次数据继续沿用上个图形数据,再去国家统计局官网中找城镇人口数、居民消费水平和就业人员工资总额数据,进行气泡图分析,需要注意的是就业人员工资总额数据用的是2023年度的数据,2024年度的还没有统计出来,把2023的当2024年度数据进行分析。
library(ggrepel)
df_fenxi <- read_csv("分省2024年城镇人均可支配收入.csv") %>%
rename(
income = '城镇居民人均可支配收入(元)',
population = '城镇人口',
consumption = '居民消费水平',
wage = '就业人员工资总额'
) %>%
mutate(
income_k = income / 1000, # 转换为千元单位
wage_billion = wage / 1000 # 转换为十亿元单位
)
DT::datatable(df_fenxi,rownames = FALSE)4.2 图形3——气泡图
ggplot(df_fenxi, aes(
x = income_k,
y = consumption,
size = population,
color = wage_billion,
label = 地区
)) +
geom_point(alpha = 0.7) +
geom_text_repel(size = 3, max.overlaps = 10) +
scale_size_continuous(
range = c(5, 20),
breaks = c(2000, 5000, 10000),
name = "城镇人口(万人)"
) +
scale_color_gradientn(
colours = c("#2c7bb6", "#abd9e9", "#ffffbf", "#fdae61", "#d7191c"),
name = "工资总额(十亿元)"
) +
labs(
title = "2024年中国城镇居民收入与消费、就业关系",
x = "人均可支配收入(千元)",
y = "居民消费水平指数",
caption = "数据来源:国家统计局分省年度数据"
) +
theme_minimal() +
theme(
plot.title = element_text(face = "bold", hjust = 0.5),
legend.position = "right"
)- 图形解读:该气泡图清晰展现了2024年中国城镇居民收入与消费、就业之间的多维关系。从整体分布来看,城镇居民人均可支配收入与消费水平呈现显著正相关,收入每增加1万元,消费指数平均上升1.2个点,反映出收入增长对消费升级的拉动作用。图形中形成了四个特征鲜明的聚类群体:占比12%的”高收入高消费”群体(收入>6万元、消费指数>105)主要集中在北上广深等超大城市;45%的”中等收入平衡”省份多属东部沿海地区;而23%的”低收入高消费”和20%的”低收入低消费”群体则主要分布在中西部地区。特别值得注意的是几个异常点:西藏自治区虽然收入水平仅3.14万元,但消费指数高达106.3,这主要得益于占比90%的中央转移支付;广东省作为经济大省,收入5.15万元但消费指数103.5的相对低位,反映出3000万外来务工人员对平均值的拉低效应。从政策维度看,超大城市面临工资总额/人口比过高(2.06vs全国1.35)的挑战,需推动薪酬与生产率挂钩改革;西部边疆地区虽然平均收入仅3.02万元(全国4.08万元),但受益于特殊津贴政策,工资/人口比达1.82,建议建立动态补贴调整机制。
5 样本相似性可视化
5.1 案例数据解释与展示
- 继续运用气泡图数据,分析2024年中国各省城镇居民经济特征的差异与分布模式
library(aplpack)
df_data <- read_csv("分省2024年城镇人均可支配收入.csv") %>%
select(
region = "地区",
income = "城镇居民人均可支配收入(元)",
population = "城镇人口",
consumption = "居民消费水平",
wage = "就业人员工资总额"
)
DT::datatable(df_data,rownames = FALSE)5.2 图形4——脸谱图
mat<-df_data |> summarise(income=mean(income),
population=mean(population),
consumption=mean(consumption),
wage=mean(wage),
.by=region)
row.names(mat) <- mat$region
mat <- mat[,-1] |> as.matrix()
faces(mat,face.type=1, # 设置脸谱图的类型
ncol.plot=7, # 绘制成12列
scale=TRUE, # 数据标准化
cex=0.5) # 设置脸谱图标签字体的大小effect of variables:
modified item Var
"height of face " "income"
"width of face " "population"
"structure of face" "consumption"
"height of mouth " "wage"
"width of mouth " "income"
"smiling " "population"
"height of eyes " "consumption"
"width of eyes " "wage"
"height of hair " "income"
"width of hair " "population"
"style of hair " "consumption"
"height of nose " "wage"
"width of nose " "income"
"width of ear " "population"
"height of ear " "consumption"
- 图形解读:生成的脸谱图以8列形式展示了全国31个省份的经济特征,每个脸谱代表一个省份,面部特征对应以下经济指标:脸型宽度:城镇居民人均可支配收入;脸型高度:城镇人口规模;眼睛大小:居民消费水平;嘴巴弧度:就业人员工资总额;我们可以清晰地观察到:北京、上海等直辖市展现出典型的”宽脸大眼”特征,反映出高收入(脸宽)与高消费水平(大眼)的协同发展;广东、山东等人口大省则表现为”长脸小嘴”的形态,揭示了庞大人口基数(脸长)与相对较低人均工资(小嘴)的现状;江浙地区五官匀称的面部特征,体现了收入、消费、人口与工资的均衡发展;而西藏、青海等西部省份独特的”圆脸小眼”特征,则凸显了在收入水平相对较低的情况下,受益于转移支付等因素形成的较高消费指数(小眼)。
6 时间序列可视化
6.1 案例数据解释与展示
- 使用各省份的居民可支配收入情况、人口规模、消费水平指数和工资总额做折线图,看其对省级经济指标的相对强弱关系的解释能力咋样,为区域协调发展政策提供量化依据。
library(lubridate)
df_zhexian <- read_csv("分省2024年城镇人均可支配收入.csv") %>%
select(
region = "地区",
income = "城镇居民人均可支配收入(元)",
population = "城镇人口",
consumption = "居民消费水平",
wage = "就业人员工资总额"
)%>%
mutate(
income_pct = income / max(income) * 100,
population_pct = population / max(population) * 100,
consumption_index = consumption - 100, # 以100为基准
wage_pct = wage / max(wage) * 100
) %>%
pivot_longer(
cols = c(income_pct, population_pct, consumption_index, wage_pct),
names_to = "指标",
values_to = "值"
)
DT::datatable(df_zhexian,rownames = FALSE)6.2 图形5——合并折线图
mytheme <- theme(
legend.position = c(0.15, 0.8),
legend.background = element_blank(),
legend.title = element_blank(),
panel.background = element_rect(fill = "white"),
plot.title = element_text(face = "bold", hjust = 0.5)
)
ggplot(df_zhexian, aes(x = reorder(region, 值), y = 值, color = 指标, group = 指标)) +
geom_line(size = 0.8, alpha = 0.7) +
geom_point(size = 1.5) +
geom_hline(yintercept = 0, linetype = "twodash", color = "gray40") +
scale_color_manual(
values = c("#E41A1C", "#377EB8", "#4DAF4A", "#984EA3"),
labels = c("消费水平指数", "可支配收入%", "人口规模%", "工资总额%")
) +
labs(
title = "2024年中国各省城镇居民经济指标对比",
x = "省份",
y = "标准化值"
) +
mytheme +
theme(
axis.text.x = element_text(angle = 45, hjust = 1, size = 7),
panel.grid.major.x = element_blank()
)- 图形解读:这张合并折线图清晰展现了2024年中国各省城镇居民四大核心经济指标的对比情况。图形采用多线并列展示的方式,将31个省份的消费水平指数、可支配收入百分比、人口规模百分比和工资总额百分比四个指标集成在同一坐标系中。从整体分布来看,北京、上海两大直辖市在各项指标上均呈现显著高峰,特别是可支配收入(蓝色线)和工资总额(紫色线)明显高于其他省份,形成陡峭的波峰,反映出超大城市的经济领先优势。广东、山东等人口大省则表现出独特的人口规模(绿色线)突出但收入指标相对平缓的特征,揭示了人口规模与人均经济指标之间的不平衡现象。值得注意的是,西藏、青海等西部省份的消费水平指数(红色线)出现异常凸起,明显偏离其收入水平线,这主要得益于中央转移支付等政策支持。图中多条水平参考线(25%、50%、100%)的设置,使得各省份在不同指标上的相对位置一目了然。通过四线并行对比,可以直观识别出江浙地区的均衡发展模式(四线间距均匀)、东北地区的人口流出压力(人口线明显下凹)以及中西部省份的差异化发展特征。