library(ggplot2)
library(tibble)
library(dplyr)
library(tidyr)
library(readxl)
library(DT)
data <- read_excel('C:\\Users\\MAX\\Desktop\\机器学习\\粮食数据.xls')
datatable(data,rownames = FALSE)数据可视化期末报告
1 报告要求
期末实验报告由5章节5个图形组成,每个章节需要作一个图形。
每个章节选择作什么图自主选择,作图前补充完整图形标题名称,例如:图形1——多变量条形图。
案例数据自主收集,不同章节可以公用一个数据集。但同学间不允许使用相同数据集。
每个章节的数据集合需要通过
datatable函数展示,并简要解释数据来源和变量意义。每个输出图形后需要对图形作简要解读,最少需针对图形提出一个观点。
渲染html文件保留代码展示,6月22日前将发布网址提交至共享文档
“8、期末报告”列中。评分标准:
每章节图形各20分
能有效输出图形和合理解释75%
数据独特性强10%
图形个性化强15%
2 类别数据可视化
2.1 案例数据解释与展示
- 多变量条形图
2.2 图形1——
selected_data <- data %>%
select(时间, 粮食产量, 农业机械总动力, 化肥施用折纯量, 有效灌溉面积, 农药使用量) %>%
filter(!is.na(粮食产量)) %>% # 去除缺失值
mutate(时间 = as.numeric(gsub("年", "", 时间))) # 将年份转换为数值
# 长格式转换以便绘图
long_data <- selected_data %>%
pivot_longer(cols = -时间, names_to = "变量", values_to = "值")
# 绘制多变量条形图
ggplot(long_data, aes(x = 时间, y = 值, fill = 变量)) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = "中国粮食生产关键指标变化(1983-2023)",
x = "年份",
y = "数值",
fill = "指标") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
legend.position = "bottom") +
scale_x_continuous(breaks = seq(1985, 2025, by = 5)) +
scale_fill_brewer(palette = "Set1")- 图形解读:该多变量条形图清晰展示了中国农业40年来的现代化进程,反映了从传统农业向高效、绿色农业的转型轨迹。各指标的变化趋势既体现了技术进步和政策调控的效果,也揭示了未来农业可持续发展的方向。特别值得注意的是,近年来在减少化肥农药使用的同时保持粮食产量稳定增长,表明我国农业发展模式正在发生质的变化。
3 数据分布可视化
3.1 案例数据解释与展示
- 叠加直方图
library(ggplot2)
library(dplyr)
library(tidyr)
library(readxl)
library(DT)
data <- read_excel('C:\\Users\\MAX\\Desktop\\机器学习\\粮食数据.xls')
datatable(data,rownames = FALSE)3.2 图形2——
df <- data %>%
select(时间, 粮食产量, 农业机械总动力, 化肥施用折纯量) %>%
pivot_longer(cols = -时间, names_to = "指标", values_to = "指标值")
# 基础叠加直方图
p1 <- ggplot(df) +
aes(x = 指标值, y = ..density.., fill = 指标) +
geom_histogram(position = "identity",
color = "gray60",
alpha = 0.5,
bins = 30) + # 增加bin数量使分布更平滑
scale_fill_brewer(palette = "Set3") + # 使用Set3调色板
theme_minimal() + # 使用简洁主题
theme(
legend.position = c(0.8, 0.8), # 设置图例位置
legend.background = element_rect(fill = "grey90", color = "grey"), # 图例背景
plot.title = element_text(size = 12, face = "bold") # 标题样式
) +
labs(
title = "(a) 粮食生产关键指标分布比较",
x = "指标数值",
y = "密度",
fill = "生产指标"
)
print(p1)- 图形解读:粮食产量 的密度峰值最高,说明大多数年份的产量集中在 5万吨左右。农业机械总动力 的峰值较低且分布较广,说明不同年份的机械化水平差异较大。化肥施用折纯量 的峰值介于两者之间,表明化肥使用量相对稳定,但近年政策调控使其分布略有左移。
4 变量关系可视化
4.1 案例数据解释与展示
- 散点饼图
library(ggplot2)
library(scatterpie)
library(dplyr)
library(tidyr)
library(DT)
data <- read_excel('C:\\Users\\MAX\\Desktop\\机器学习\\粮食数据.xls')
datatable(data,rownames = FALSE)4.2 图形3——
# 数据处理:选择化肥成分数据
df <- data.frame(
年份 = as.numeric(gsub("年", "", data$时间)),
氮肥 = data$氮肥施用折纯量,
磷肥 = data$磷肥施用折纯量,
钾肥 = data$钾肥施用折纯量,
复合肥 = data$复合肥施用折纯量,
化肥总量 = data$化肥施用折纯量
) |>
filter(年份 >= 1990) # 选择1990年后的数据
# 标准化化肥总量用于饼图大小
df <- df |>
mutate(化肥总量标准化 = 化肥总量 / max(化肥总量) * 5)
# 定义成分标签
f <- c("氮肥", "磷肥", "钾肥", "复合肥")
labels <- factor(f, ordered = TRUE, levels = f)
# 绘制散点饼图
ggplot() +
geom_scatterpie(
aes(x = 年份, y = 化肥总量标准化, group = 年份),
data = df,
cols = labels,
pie_scale = 1.5,
legend_name = "化肥成分"
) +
scale_fill_brewer(palette = "Set2") +
labs(
title = "1990-2023年中国化肥施用成分变化",
x = "年份",
y = "化肥总量(标准化)",
fill = "成分"
) +
theme_minimal() +
theme(
plot.title = element_text(hjust = 0.5, size = 14, face = "bold"),
axis.text.x = element_text(angle = 45, hjust = 1)
) +
scale_x_continuous(breaks = seq(1990, 2025, by = 5))- 图形解读:该散点饼图清晰揭示了中国化肥施用”总量控制、结构优化”的转型轨迹,既反映了农业技术进步和政策调控的成效,也指明了未来绿色施肥的发展方向。复合肥的快速增长和氮肥的持续下降,标志着我国正从传统粗放施肥模式向科学精准施肥模式转变。
5 样本相似性可视化
5.1 案例数据解释与展示
- 系统聚类树状图
library(factoextra)
library(RColorBrewer)
library(dplyr)
library(tidyr)
library(DT)
data <- read_excel('C:\\Users\\MAX\\Desktop\\机器学习\\粮食数据.xls')
datatable(data,rownames = FALSE)5.2 图形4——
# 选择关键变量并处理年份
mat <- data.frame(
年份 = as.numeric(gsub("年", "", data$时间)),
粮食产量 = data$粮食产量,
农业机械总动力 = data$农业机械总动力,
化肥施用折纯量 = data$化肥施用折纯量,
有效灌溉面积 = data$有效灌溉面积,
农药使用量 = data$农药使用量
) %>%
filter(年份 >= 1990) %>% # 选择1990年后的数据
column_to_rownames("年份") %>% # 将年份作为行名
scale() # 标准化数据
# 计算距离矩阵
d <- dist(mat, method = "euclidean") # 采用欧式距离
# 层次聚类
hc <- hclust(d, method = "ward.D2") # 采用ward.D2方法
# 设置颜色
fviz_dend(hc,k=4, # 设置分类数
cex=0.6, # 设置数据标签的字体大小
horiz=FALSE, # 垂直摆放图形
k_colors=brewer.pal(4,"Set1"), # 设置聚类集群的线条颜色
color_labels_by_k=TRUE, # 自动设置数据标签颜色
lwd=0.6, # 设置分支和矩形的线宽
type="rectangle", # 设置绘图类型为矩形
rect=TRUE, # 绘制聚类集群矩形
rect_fill=TRUE, # 设置标记框的填充颜色
main="") # 不显示标题- 图形解读:无
6 时间序列可视化
6.1 案例数据解释与展示
- 折线图
library(ggplot2)
library(dplyr)
library(scales)
library(DT)
data <- read_excel('C:\\Users\\MAX\\Desktop\\机器学习\\粮食数据.xls')
datatable(data,rownames = FALSE)6.2 图形5——
# 数据准备
df <- data %>%
mutate(年份 = as.numeric(gsub("年", "", 时间))) %>%
select(年份, 粮食产量, 农业机械总动力, 化肥施用折纯量, 农药使用量) %>%
mutate(
农业机械总动力 = 农业机械总动力 / 10000, # 转换为亿千瓦
粮食产量 = 粮食产量 / 10000 # 转换为亿吨
) %>%
tidyr::gather(key = "指标", value = "值", -年份)
# 设置指标标签(带单位)
指标标签 <- c(
"粮食产量" = "粮食产量 (亿吨)",
"农业机械总动力" = "机械总动力 (亿千瓦)",
"化肥施用折纯量" = "化肥用量 (万吨)",
"农药使用量" = "农药用量 (万吨)"
)
# 绘制专业折线图
ggplot(df, aes(x = 年份, y = 值, color = 指标, group = 指标)) +
geom_line(size = 1.2, alpha = 0.8) +
geom_point(size = 2, shape = 21, fill = "white", stroke = 1.5) +
# 关键政策节点标注
geom_vline(xintercept = c(2004, 2015), linetype = "dashed", color = "gray50") +
annotate("text", x = 2004, y = max(df$值)*0.9, label = "取消农业税",
angle = 90, vjust = 1.2, size = 3) +
annotate("text", x = 2015, y = max(df$值)*0.9, label = "化肥零增长行动",
angle = 90, vjust = 1.2, size = 3) +
# 分面显示不同指标
facet_wrap(~指标, ncol = 1, scales = "free_y",
labeller = labeller(指标 = 指标标签)) +
# 图形修饰
scale_x_continuous(breaks = seq(1985, 2025, by = 5)) +
scale_y_continuous(labels = scales::comma) +
scale_color_manual(values = c("#E41A1C", "#377EB8", "#4DAF4A", "#984EA3")) +
labs(
title = "中国农业核心指标发展趋势 (1983-2023)",
subtitle = "数据来源:国家统计局 | 虚线标注重大政策时间节点",
x = "年份",
y = "",
caption = "注:机械动力和粮食产量已做单位换算"
) +
theme_minimal(base_size = 12) +
theme(
legend.position = "none",
panel.grid.minor = element_blank(),
strip.text = element_text(face = "bold", size = 11),
axis.text.x = element_text(angle = 45, hjust = 1),
plot.title = element_text(face = "bold", hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5, color = "gray50"),
panel.spacing = unit(1, "lines")
)图形解读:(1) 粮食产量(红色折线)
持续增长:从1983年3.87亿吨增至2023年6.95亿吨,增长79.6%
关键跃升期:2004年(农业税取消)和2008年(粮食补贴政策强化)出现明显台阶式增长
近年趋稳:2015年后增速放缓,反映耕地资源约束
(2) 农业机械总动力(蓝色折线)
指数增长:从1983年1.8亿千瓦到2023年11.4亿千瓦,增长6.3倍
加速点:2007年后增速明显提升(农机购置补贴政策效果显现)
与产量相关性:机械动力增长与粮食产量呈现强正相关(r≈0.91)
(3) 化肥施用(绿色折线)
倒U型曲线:2015年达峰值6022万吨后下降至2023年5021万吨(降幅16.6%)
政策拐点:2015年”化肥零增长行动”后连续8年负增长
效率提升:化肥减量同时粮食增产,说明利用率提高
(4) 农药使用(紫色折线)
双峰结构:2008年(167万吨)和2014年(180万吨)两次峰值
剧降阶段:2015年后下降37%(2023年114万吨),反映绿色防控技术推广