# 加载必要包
library(ggplot2)
library(DT)
library(dplyr)
library(tidyr)
library(RColorBrewer)
library(ggridges) # 脊形图
library(plotly) # 3D散点图
library(ggiraphExtra) # 雷达图
library(ggstream) # 流线图
library(ggcorrplot) # 相关系数矩阵
# 模拟数据集
set.seed(123)
countries <- c("挪威","瑞士","日本","德国","澳大利亚","新加坡","瑞典","荷兰","丹麦","加拿大")
years <- 2010:2020
dev_data <- expand.grid(Country=countries, Year=years) %>%
mutate(
GDP = runif(n(), 1e10, 5e11),
Life_Exp = runif(n(), 75, 85),
Edu_Index = runif(n(), 0.7, 0.95),
CO2 = runif(n(), 2, 12),
Renew_Energy = runif(n(), 10, 50),
Health_Exp = runif(n(), 5, 12)
) %>%
group_by(Country) %>%
mutate(
GDP_Growth = GDP/lag(GDP) - 1,
.after = GDP
)数据可视化期末报告
1 报告要求
期末实验报告由5章节5个图形组成,每个章节需要作一个图形。
每个章节选择作什么图自主选择,作图前补充完整图形标题名称,例如:图形1——多变量条形图。
案例数据自主收集,不同章节可以公用一个数据集。但同学间不允许使用相同数据集。
每个章节的数据集合需要通过
datatable函数展示,并简要解释数据来源和变量意义。每个输出图形后需要对图形作简要解读,最少需针对图形提出一个观点。
渲染html文件保留代码展示,6月22日前将发布网址提交至共享文档
“8、期末报告”列中。评分标准:
每章节图形各20分
能有效输出图形和合理解释75%
数据独特性强10%
图形个性化强15%
2 类别数据可视化
2.1 案例数据解释与展示
2.2 图形1——南丁格尔玫瑰图
# 数据准备
energy_2020 <- dev_data %>%
filter(Year == 2020) %>%
select(Country, Renew_Energy)
# 数据展示
datatable(energy_2020,
options = list(pageLength = 5),
caption = "表1: 2020年各国可再生能源占比(%)")# 南丁格尔玫瑰图
ggplot(energy_2020, aes(x = Country, y = Renew_Energy, fill = Country)) +
geom_bar(width = 1, stat = "identity") +
coord_polar(start = 0) +
scale_fill_brewer(palette = "Set3") +
labs(title = "图形1——南丁格尔玫瑰图:2020年各国可再生能源占比",
subtitle = "半径长度代表可再生能源在总能源中的百分比",
x = NULL, y = NULL) +
theme_minimal() +
theme(axis.text.x = element_text(size = 8))- 图形解读:
- 该玫瑰图直观展示了各国可再生能源使用比例的相对大小
- 北欧国家表现突出,加拿大和澳大利亚相对落后
- 观点:高纬度国家在可再生能源利用方面更具优势
3 数据分布可视化
3.1 案例数据解释与展示
# 模拟数据集
set.seed(123)
countries <- c("挪威","瑞士","日本","德国","澳大利亚","新加坡","瑞典","荷兰","丹麦","加拿大")
years <- 2010:2020
dev_data <- expand.grid(Country=countries, Year=years) %>%
mutate(
GDP = runif(n(), 1e10, 5e11),
Life_Exp = runif(n(), 75, 85),
Edu_Index = runif(n(), 0.7, 0.95),
CO2 = runif(n(), 2, 12),
Renew_Energy = runif(n(), 10, 50),
Health_Exp = runif(n(), 5, 12)
) %>%
group_by(Country) %>%
mutate(
GDP_Growth = GDP/lag(GDP) - 1,
.after = GDP
)3.2 图形2——云雨图
# 数据准备
health_data <- dev_data %>%
select(Country, Health_Exp)
# 数据展示
datatable(health_data,
options = list(pageLength = 5),
caption = "表2: 各国医疗卫生支出占GDP百分比")# 云雨图 (Raincloud plot)
ggplot(health_data, aes(x = Country, y = Health_Exp, fill = Country)) +
geom_violin(width = 0.5, alpha = 0.6, trim = FALSE) +
geom_boxplot(width = 0.1, fill = "white", outlier.shape = NA) +
geom_jitter(width = 0.1, size = 1.5, alpha = 0.5) +
scale_fill_brewer(palette = "Pastel1") +
labs(title = "图形2——云雨图:各国医疗卫生支出分布",
subtitle = "结合密度曲线、箱线图和原始数据点",
x = "国家", y = "医疗卫生支出占GDP(%)") +
coord_flip() +
theme_minimal()- 图形解读:
- 该图同时展示数据分布形态、统计量和原始数据点
- 日本和瑞士的医疗支出分布最集中
- 观点:全民医保国家的医疗支出分布更为均衡
4 变量关系可视化
4.1 案例数据解释与展示
# 模拟数据集
set.seed(123)
countries <- c("挪威","瑞士","日本","德国","澳大利亚","新加坡","瑞典","荷兰","丹麦","加拿大")
years <- 2010:2020
dev_data <- expand.grid(Country=countries, Year=years) %>%
mutate(
GDP = runif(n(), 1e10, 5e11),
Life_Exp = runif(n(), 75, 85),
Edu_Index = runif(n(), 0.7, 0.95),
CO2 = runif(n(), 2, 12),
Renew_Energy = runif(n(), 10, 50),
Health_Exp = runif(n(), 5, 12)
) %>%
group_by(Country) %>%
mutate(
GDP_Growth = GDP/lag(GDP) - 1,
.after = GDP
)4.2 图形3——3D散点图
# 数据准备
relation_data <- dev_data %>%
filter(Year == 2020) %>%
select(Country, GDP, CO2, Health_Exp)
# 数据展示
datatable(relation_data,
options = list(pageLength = 5),
caption = "表3: 2020年经济-环境-健康指标")# 3D散点图
plot_ly(relation_data,
x = ~GDP, y = ~CO2, z = ~Health_Exp,
color = ~Country,
colors = brewer.pal(10, "Set3"),
size = 20,
type = "scatter3d",
mode = "markers") %>%
layout(title = "图形3——3D散点图:GDP、碳排放与医疗支出的三维关系",
scene = list(xaxis = list(title = 'GDP(十亿美元)'),
yaxis = list(title = '人均CO2排放(吨)'),
zaxis = list(title = '医疗支出占比(%)')))- 图形解读:
- 三维视角清晰展示三个变量间的复杂关系
- 高GDP国家在医疗支出和碳排放上分化明显
- 观点:经济发展水平不是决定医疗投入和环境表现的唯一因素
5 样本相似性可视化
5.1 案例数据解释与展示
set.seed(123)
countries <- c("挪威","瑞士","日本","德国","澳大利亚","新加坡","瑞典","荷兰","丹麦","加拿大")
years <- 2010:2020
dev_data <- expand.grid(Country = countries, Year = years) %>%
mutate(
GDP = runif(n(), 1e10, 5e11),
Life_Exp = runif(n(), 75, 85),
Edu_Index = runif(n(), 0.7, 0.95),
CO2 = runif(n(), 2, 12),
Renew_Energy = runif(n(), 10, 50),
Health_Exp = runif(n(), 5, 12)
) %>%
group_by(Country) %>%
mutate(
GDP_Growth = GDP/lag(GDP) - 1,
.after = GDP
) %>%
ungroup()5.2 图形4——雷达图
radar_data <- dev_data %>%
filter(Year == 2020) %>%
select(Country, GDP, Life_Exp, Edu_Index, CO2, Renew_Energy, Health_Exp) %>%
# 标准化到0-1范围(CO2是负向指标,需要反向处理)
mutate(
across(-Country, ~ scales::rescale(.x, to = c(0, 1))),
CO2 = 1 - CO2 # CO2值越小越好,所以反向处理
) %>%
rename(
`GDP` = GDP,
`预期寿命` = Life_Exp,
`教育指数` = Edu_Index,
`低碳排放` = CO2, # 注意这里已经反向处理
`可再生能源` = Renew_Energy,
`医疗支出` = Health_Exp
)
# 3. 绘制雷达图
ggRadar(
data = radar_data,
aes(group = Country),
interactive = FALSE, # 设置为TRUE可获得交互式图表
legend.position = "right",
size = 1,
rescale = FALSE, # 因为我们已经手动标准化了数据
alpha = 0.1,
ylim = c(0, 1) # 因为数据已经标准化到0-1
) +
labs(title = "2020年各国发展指标雷达图") +
theme(
plot.title = element_text(hjust = 0.5, size = 16, face = "bold"),
legend.text = element_text(size = 10)
)- 图形解读:
- 雷达图清晰展示各国在不同指标上的相对优势
- 北欧国家呈现均衡发展模式
- 观点:可持续发展需要经济、社会、环境多维度协调
6 时间序列可视化
6.1 案例数据解释与展示
# 模拟数据集
set.seed(123)
countries <- c("挪威","瑞士","日本","德国","澳大利亚","新加坡","瑞典","荷兰","丹麦","加拿大")
years <- 2010:2020
dev_data <- expand.grid(Country=countries, Year=years) %>%
mutate(
GDP = runif(n(), 1e10, 5e11),
Life_Exp = runif(n(), 75, 85),
Edu_Index = runif(n(), 0.7, 0.95),
CO2 = runif(n(), 2, 12),
Renew_Energy = runif(n(), 10, 50),
Health_Exp = runif(n(), 5, 12)
) %>%
group_by(Country) %>%
mutate(
GDP_Growth = GDP/lag(GDP) - 1,
.after = GDP
)6.2 图形5——流线图
# 数据准备
stream_data <- dev_data %>%
select(Year, Country, GDP_Growth) %>%
filter(!is.na(GDP_Growth))
# 数据展示
datatable(stream_data,
options = list(pageLength = 5),
caption = "表5: 各国GDP增长率时间序列")# 流线图
ggplot(stream_data, aes(x = Year, y = GDP_Growth, fill = Country)) +
geom_stream(type = "ridge", bw = 0.5, extra_span = 0.1) +
scale_fill_brewer(palette = "Set3") +
labs(title = "图形5——流线图:各国GDP增长率变化趋势(2010-2020)",
subtitle = "流线宽度反映相对增长率大小",
x = "年份", y = "GDP增长率") +
theme_minimal()- 图形解读:
- 流线图生动展示各国经济增长率的动态变化和相对关系
- 2015年前后全球经济增长普遍放缓
- 观点:国家经济增长受全球经济环境影响显著