data1<-read.csv("C:/Users/jenni/Desktop/年度数据.csv")
DT::datatable(data1,rownames = FALSE)数据可视化期末报告
1 报告要求
期末实验报告由5章节5个图形组成,每个章节需要作一个图形。
每个章节选择作什么图自主选择,作图前补充完整图形标题名称,例如:图形1——多变量条形图。
案例数据自主收集,不同章节可以公用一个数据集。但同学间不允许使用相同数据集。
每个章节的数据集合需要通过
datatable函数展示,并简要解释数据来源和变量意义。每个输出图形后需要对图形作简要解读,最少需针对图形提出一个观点。
渲染html文件保留代码展示,6月22日前将发布网址提交至共享文档
“8、期末报告”列中。评分标准:
每章节图形各20分
能有效输出图形和合理解释75%
数据独特性强10%
图形个性化强15%
2 类别数据可视化
2.1 案例数据解释与展示
- 数据来源于国家统计局的年度数据,其中国民经济核算的国内生产总值,变量分别有指标,国民总收入,国内生产总值,第一产业增加值,第二产业增加值,第三产业增加值,人均国内生产总值
2.2 图形1——饼环图
library(dplyr)
library(ggplot2)
# Assuming data1 is your original data frame
df <- data1 %>%
select(指标, 第一产业增加值, 第二产业增加值, 第三产业增加值)
df_long <- df %>%
tidyr::pivot_longer(
cols = -指标,
names_to = "产业",
values_to = "增加值"
)
# Calculate percentages - need to group by 指标 if you have multiple categories
plot_data <- df_long %>%
group_by(指标) %>%
mutate(
百分比 = 增加值 / sum(增加值) * 100,
label = paste0(产业, "\n", round(百分比, 1), "%")
) %>%
ungroup()
# If you want to plot for a specific 指标 (assuming it's a character/factor variable)
selected_index <- plot_data$指标[1] # or specify your selection
ggplot(plot_data %>% filter(指标 == selected_index),
aes(x = 2, y = 增加值, fill = 产业)) +
geom_col(width = 1, color = "white") +
geom_text(
aes(y = 增加值/2 + c(0, cumsum(增加值)[-length(增加值)]),
label = label), # Use the label from the data frame
color = "black",
size = 4
) +
coord_polar(theta = "y") +
xlim(0.5, 2.5) +
labs(title = paste("产业结构占比 -", selected_index)) +
theme_void() +
scale_fill_manual(values = c("#4E79A7", "#F28E2B", "#E15759")) +
guides(fill = "none") # Remove legend if not needed图形解读:
这个饼环图显示第三产业增加值占比最大,为56.7%。这表明第三产业在该年的经济结构中占据了主导地位,第二产业增加值占比为36.5%,比第三产业少,也是一个重要的组成部分,第一产业增加值占比最小,为6.8%。反映了农业或初级产业在整体经济中的较小份额。总体来看,该图表明经济结构中第三产业占据主导地位,第二产业次之,而第一产业相对较小,这种结构是经济发展到较高阶段的重要特征。
3 数据分布可视化
3.1 案例数据解释与展示
- 数据来源于国家统计局的年度数据,其中国民经济核算的国内生产总值,变量分别有指标,国民总收入,国内生产总值,第一产业增加值,第二产业增加值,第三产业增加值,人均国内生产总值
data1<-read.csv("C:/Users/jenni/Desktop/年度数据.csv")
DT::datatable(data1,rownames = FALSE)3.2 图形2——箱线图
library(ggplot2)
library(dplyr)
library(tidyr) # 替代reshape2的gather
library(forcats) # 提供fct_inorder函数
library(RColorBrewer)
# 自定义主题
mytheme <- theme(
plot.title = element_text(size = 11), # 英文逗号
axis.title = element_text(size = 10),
axis.text = element_text(size = 9),
legend.text = element_text(size = 8)
)
# 数据处理
df <- data1 %>%
select(-c(1, 2, 3)) %>%
pivot_longer(
cols = everything(),
names_to = "指标",
values_to = "指标值"
) %>%
mutate(指标 = fct_inorder(指标))
# 检查唯一指标数量
n_indicators <- n_distinct(df$指标)
print(paste("指标数量:", n_indicators)) [1] "指标数量: 4"
# 动态生成调色板(匹配实际指标数量)
palette <- brewer.pal(n_indicators, "Set2")
# 绘图
ggplot(df, aes(x = 指标, y = 指标值, fill = 指标)) +
geom_boxplot() +
stat_summary(
fun = "mean",
geom = "point",
shape = 21,
size = 2.5,
fill = "white"
) +
scale_fill_manual(values = palette) + # 指定颜色
mytheme图形解读:
这个箱线图可以用于展示不同指标的数据分布情况,第一产业增加值是绿色的,第二产业增加值是橙色的,第三产业增加值是蓝色的,人均国内生产总值是紫色的,第二产业增加值的中位数和四分位数范围较大,表示数据分布较广,第三产业增加值的中位数较高,且数据分布较为集中,人均国内生产总值的中位数最低,数据分布也较为集中。
4 变量关系可视化
4.1 案例数据解释与展示
- 数据来源于国家统计局的年度数据,其中国民经济核算的国内生产总值,变量分别有指标,国民总收入,国内生产总值,第一产业增加值,第二产业增加值,第三产业增加值,人均国内生产总值
library(ggplot2)
library(ggExtra)
df <- as.data.frame(data1)4.2 图形3——两变量散点图
p1 <- ggplot(data = df, aes(x = 国民总收入, y = 国内生产总值)) +
geom_point(shape = 21, size = 1.5, fill = "deepskyblue") +
geom_rug(color = "steelblue") +
stat_smooth(method = lm, color = "red", fill = "blue", size = 0.8) +
geom_point(aes(x = mean(国民总收入), y = mean(国内生产总值)),
shape = 21, fill = "yellow", size = 4) +
ggtitle("散点图+地毯图+线性拟合+边际图")
ggMarginal(p1, type = "densigram", color = "grey50",
fill = "lightskyblue", alpha = 0.5)图形解读:
这个散点图结合了线性拟合和边际图,展示了两个变量之间的关系,横轴是“国民总收入”,纵轴是“国内生产总值”。散点图显示了国民总收入和国内生产总值之间的关系,红色的线是线性拟合线,表示两者之间的线性关系,顶部和右侧的条形图(边际图)分别展示了国民总收入和国内生产总值的分布情况,线性拟合线表明国民总收入和国内生产总值之间存在正相关关系,即随着国民总收入的增加,国内生产总值也倾向于增加。
5 样本相似性可视化
5.1 案例数据解释与展示
- 数据来源于国家统计局的年度数据,其中国民经济核算的国内生产总值,变量分别有指标,国民总收入,国内生产总值,第一产业增加值,第二产业增加值,第三产业增加值,人均国内生产总值
library(ggiraphExtra) # 加载雷达图所需的包
library(ggplot2)
data1<-read.csv("C:/Users/jenni/Desktop/年度数据.csv")
DT::datatable(data1,rownames = FALSE)5.2 图形4——雷达图
# 自定义主题
mytheme <- theme(
legend.position = "right", # 设置图例位置
axis.text.x = element_text(size = 9, color = "blue4") # 设置x轴文本样式
)
# 创建雷达图
ggRadar(
data = data1, # 使用data参数
mapping = aes(group = 指标), # 按指标分组
rescale = FALSE, # 数据不归一化
ylim = c(0, 1500000), # 调整y轴范围以适应数据
alpha = 0, # 设置颜色透明度
size = 2 # 设置线的大小
) +
mytheme +
xlab("指标") + # 设置x轴标签
ylab("数值") + # 设置y轴标签
ggtitle("(a) 原始数据雷达图") # 添加标题图形解读:
这个雷达图用于展示2015年到2024年在四个指标上的表现。图中的四个指标分别是产业增加值,第二产业增加值,第三产业增加值,人均国内生产总值,可以看出第一次产业增加值和人均国内生产总值数值较小,随着年份增加得不多,国民总收入和国内生产总值的数值较大,且随着年份的增加也有所增加
6 时间序列可视化
6.1 案例数据解释与展示
- 数据来源于国家统计局的年度数据,其中国民经济核算的三次产业构成,变量分别有指标,三次产业贡献率,第一产业对GDP的贡献率,第二产业对GDP的贡献率,第三产业对GDP的贡献率
library(ggplot2)
library(dplyr)
library(tidyr)
data2<-read.csv("C:/Users/jenni/Desktop/产业.csv")
DT::datatable(data2,rownames = FALSE)df <- data2 %>%
select(指标, 第一产业对GDP的贡献率, 第二产业对GDP的贡献率, 第三产业对GDP的贡献率) %>%
filter(指标 >= "2015年" & 指标 <= "2024年") %>%
pivot_longer(
cols = -指标,
names_to = "产业类型",
values_to = "贡献率"
)6.2 图形5——分面折线图
# 绘制分面折线图
ggplot(df, aes(x = 指标, y = 贡献率, color = 产业类型, group = 产业类型)) +
geom_line(size = 1) +
geom_point(size = 2) +
facet_wrap(~产业类型, ncol = 1, scales = "free_y") + # 垂直排列,y轴独立
labs(
title = "三大产业对GDP贡献率趋势(2015-2024)",
x = "年份",
y = "贡献率(%)",
color = "产业类型"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1), # x轴标签倾斜
legend.position = "none", # 移除图例(因为分面已说明)
strip.text = element_text(size = 10, face = "bold") # 分面标题样式
)图形解读:
分面折线图展示了2015年至2024年间三大产业对GDP贡献率的趋势。第二产业对GDP的贡献率是红色的线,这条线显示了第二产业对GDP的贡献率在这十年间的变化趋势。可以看到,整体上贡献率有波动,但总体保持在30%到40%之间。第三产业对GDP的贡献率是绿色的线,这条线显示了第三产业对GDP的贡献率,总体来看,第三产业的贡献率呈上升趋势,从2015年的约50%上升到2024年的接近60%。第一产业对GDP的贡献率是蓝色的线,这条线显示了第一产业对GDP的贡献率,第一产业的贡献率相对较低,且在这十年间有小幅波动,整体趋势较为平稳。