# 加载必要的包
library(readxl) # 读取Excel文件
library(tidyverse) # 数据处理和可视化
library(ggthemes) # 主题美化
file_path <- "石油平衡表.xlsx"
# 读取第一张表(跳过前4行标题)
raw_data <- read_excel(file_path, sheet = 1, skip = 4, col_names = TRUE)
# 清理列名(处理中英文混合和特殊符号)
colnames(raw_data) <- c(
"item_cn", "item_en", "1990", "1995", "2000", "2005",
"2010", "2015", "2020", "2021", "2022"
)
# 转换为长格式(便于ggplot2绘图)
long_data <- raw_data %>%
pivot_longer(
cols = `1990`:`2022`,
names_to = "year",
values_to = "value"
) %>%
mutate(year = as.numeric(year)) %>%
filter(!is.na(value))
df <- long_data
DT::datatable(df)数据可视化期末报告
1 报告要求
期末实验报告由5章节5个图形组成,每个章节需要作一个图形。
每个章节选择作什么图自主选择,作图前补充完整图形标题名称,例如:图形1——多变量条形图。
案例数据自主收集,不同章节可以公用一个数据集。但同学间不允许使用相同数据集。
每个章节的数据集合需要通过
datatable函数展示,并简要解释数据来源和变量意义。每个输出图形后需要对图形作简要解读,最少需针对图形提出一个观点。
渲染html文件保留代码展示,6月22日前将发布网址提交至共享文档
“8、期末报告”列中。评分标准:
每章节图形各20分
能有效输出图形和合理解释75%
数据独特性强10%
图形个性化强15%
2 类别数据可视化
2.1 案例数据解释与展示
2.1.1 1. 供需总量指标
指标名称(中文) 指标名称(英文) 解释 可供量 Available for Consumption 国内石油实际可使用的总量,计算公式: 可供量 = 生产量 + 进口量 - 出口量 + 库存变化生产量 Production 国内原油产量(注脚说明:仅为原油产量,不含成品油) 进口量 Imports 从国外进口的原油及石油产品总量 出口量(-) Exports (-) 出口到国外的原油及石油产品总量(符号“-”表示在平衡表中需扣除) 年初年末库存差额 Stock Changes in the Year 年初库存与年末库存的差值(正数表示库存减少,负数表示库存增加) 消费量 Consumption 国内实际消费的石油总量(包含各行业消费及加工转换损耗) 2.1.2 2. 分行业消费量(中英文对照)
行业分类(中文) 行业分类(英文) 解释 农、林、牧、渔业 Agriculture, Forestry, Animal Husbandry and Fishery 农业机械、渔业船舶等使用的燃油消耗 工业 Industry 制造业、采矿业、能源工业等生产过程中的石油消耗 建筑业 Construction 工程机械、施工设备等使用的燃油消耗 交通运输、仓储和邮政业 Transport, Storage and Post 汽车、船舶、飞机、物流运输等燃油消耗 批发和零售业、住宿和餐饮业 Wholesale and Retail Trades, Hotels and Catering Services 商业活动中的燃油及能源消耗 其他 Other Sectors 未明确分类的其他行业石油消费 居民生活 Household Consumption 家庭用车、取暖等生活用油 2.1.3 3. 消费用途分类
指标名称(中文) 指标名称(英文) 解释 终端消费 Final Consumption 直接用于最终需求的石油消费(如工业用电、交通燃油等) #工业 Industry 终端消费中工业领域的占比(子分类) 中间消费(用于加工转换) Intermediate Consumption (Consumed in Transformation) 石油作为原料用于加工成其他能源(如发电、制气等) 火力发电 Thermal Power 用于火力发电的石油消耗量 供热 Heating 用于区域供暖的石油消耗量 制气 Gas Production 用于生产煤制气、液化气的石油消耗量 炼油损失量 Losses in Petroleum Refining 石油炼化过程中的工艺损耗 损失量 Other Losses 运输、储存等其他环节的损失量 2.1.4 4. 其他关键指标
指标名称(中文) 指标名称(英文) 解释 平衡差额 Balance 供需平衡结果,计算公式:
平衡差额 = 可供量 - 消费量
- 正值:供大于求(盈余)
- 负值:供不应求(缺口)
注 Note 特别说明:生产量仅指原油产量,不含成品油加工量 - 正值:供大于求(盈余)
2.2 图形1——堆叠面积图
library(tidyverse)
library(readxl)
# 安全读取方式(处理列名问题)
data <- read_excel("石油平衡表.xlsx", sheet = 1, skip = 4) %>%
# 只重命名确认存在的列
rename_with(~ case_when(
. == "项目" ~ "item_cn",
. == "Item" ~ "item_en",
TRUE ~ .
)) %>%
# 处理年份列(假设年份是分散的列)
pivot_longer(
cols = matches("^[0-9]{4}$"), # 匹配1990,1995等列
names_to = "year",
values_to = "value"
) %>%
mutate(
year = as.numeric(year),
item_cn = gsub("\n", "", item_cn)
)
# 绘图
ggplot(
data %>% filter(str_detect(item_cn, "农、林、牧、渔业|工业|建筑业|交通运输|批发和零售业|其他|居民生活")),
aes(x = year, y = value, fill = item_cn)
) +
geom_area(alpha = 0.8) +
labs(title = "石油消费量行业结构", x = "年份", y = "万吨") +
theme_minimal() +
scale_fill_brewer(palette = "Set3")- 图形解读:
- 行业占比趋势:
工业始终是最大消费领域(2022年占比约46%)。
交通运输业消费量快速增长(2000年后显著上升)。
居民生活消费占比逐步提高(从1990年的2.5%增至2022年的10.4%)。
- 关键转折点:
2015年后工业消费增速放缓,可能与经济结构调整相关。
2020年交通运输业消费量短暂下降(受疫情影响)
3 数据分布可视化
3.1 案例数据解释与展示
3.1.1 1. 供需总量指标
指标名称(中文) 指标名称(英文) 解释 可供量 Available for Consumption 国内石油实际可使用的总量,计算公式: 可供量 = 生产量 + 进口量 - 出口量 + 库存变化生产量 Production 国内原油产量(注脚说明:仅为原油产量,不含成品油) 进口量 Imports 从国外进口的原油及石油产品总量 出口量(-) Exports (-) 出口到国外的原油及石油产品总量(符号“-”表示在平衡表中需扣除) 年初年末库存差额 Stock Changes in the Year 年初库存与年末库存的差值(正数表示库存减少,负数表示库存增加) 消费量 Consumption 国内实际消费的石油总量(包含各行业消费及加工转换损耗) 3.1.2 2. 分行业消费量(中英文对照)
行业分类(中文) 行业分类(英文) 解释 农、林、牧、渔业 Agriculture, Forestry, Animal Husbandry and Fishery 农业机械、渔业船舶等使用的燃油消耗 工业 Industry 制造业、采矿业、能源工业等生产过程中的石油消耗 建筑业 Construction 工程机械、施工设备等使用的燃油消耗 交通运输、仓储和邮政业 Transport, Storage and Post 汽车、船舶、飞机、物流运输等燃油消耗 批发和零售业、住宿和餐饮业 Wholesale and Retail Trades, Hotels and Catering Services 商业活动中的燃油及能源消耗 其他 Other Sectors 未明确分类的其他行业石油消费 居民生活 Household Consumption 家庭用车、取暖等生活用油 3.1.3 3. 消费用途分类
指标名称(中文) 指标名称(英文) 解释 终端消费 Final Consumption 直接用于最终需求的石油消费(如工业用电、交通燃油等) #工业 Industry 终端消费中工业领域的占比(子分类) 中间消费(用于加工转换) Intermediate Consumption (Consumed in Transformation) 石油作为原料用于加工成其他能源(如发电、制气等) 火力发电 Thermal Power 用于火力发电的石油消耗量 供热 Heating 用于区域供暖的石油消耗量 制气 Gas Production 用于生产煤制气、液化气的石油消耗量 炼油损失量 Losses in Petroleum Refining 石油炼化过程中的工艺损耗 损失量 Other Losses 运输、储存等其他环节的损失量 3.1.4 4. 其他关键指标
指标名称(中文) 指标名称(英文) 解释 平衡差额 Balance 供需平衡结果,计算公式:
平衡差额 = 可供量 - 消费量
- 正值:供大于求(盈余)
- 负值:供不应求(缺口)
注 Note 特别说明:生产量仅指原油产量,不含成品油加工量 - 正值:供大于求(盈余)
# 加载必要的包
library(readxl) # 读取Excel文件
library(tidyverse) # 数据处理和可视化
library(ggthemes) # 主题美化
file_path <- "石油平衡表.xlsx"
# 读取第一张表(跳过前4行标题)
raw_data <- read_excel(file_path, sheet = 1, skip = 4, col_names = TRUE)
# 清理列名(处理中英文混合和特殊符号)
colnames(raw_data) <- c(
"item_cn", "item_en", "1990", "1995", "2000", "2005",
"2010", "2015", "2020", "2021", "2022"
)
# 转换为长格式(便于ggplot2绘图)
long_data <- raw_data %>%
pivot_longer(
cols = `1990`:`2022`,
names_to = "year",
values_to = "value"
) %>%
mutate(year = as.numeric(year)) %>%
filter(!is.na(value))
df <- long_data
DT::datatable(df)3.2 图形2——柱状对比图
ggplot(
data %>% filter(item_en %in% c("Imports", "Exports (-)")),
aes(x = year, y = value, fill = item_en)
) +
geom_col(position = "dodge") +
labs(title = "石油进出口量对比", x = "年份", y = "万吨") +
scale_fill_brewer(palette = "Set1")- 图形解读:
- 进口量(Imports):
持续快速增长:从1990年的756万吨增至2022年的58,701万吨,增长约77倍。
关键拐点:
2000年后加速(加入WTO推动需求);
2020年达峰值(61,272万吨),后小幅回落(可能因疫情或能源结构调整)。
- 出口量(Exports (-)):
相对稳定:始终低于进口量,2022年为6,704万吨。
小幅波动:2015年后略有上升(可能与炼油产能提升有关)。
- 净进口依赖:
- 2022年净进口量 = 58,701 - 6,704 = 51,997万吨,对外依存度显著。
3.2.1 关键数据对比(2022年)
| 指标 | 数量(万吨) | 较1990年变化 |
|---|---|---|
| 进口量 | 58,701 | +7,663% |
| 出口量 | 6,704 | +116% |
| 净进口量 | 51,997 | - |
4 变量关系可视化
4.1 案例数据解释与展示
4.1.1 1. 供需总量指标
指标名称(中文) 指标名称(英文) 解释 可供量 Available for Consumption 国内石油实际可使用的总量,计算公式: 可供量 = 生产量 + 进口量 - 出口量 + 库存变化生产量 Production 国内原油产量(注脚说明:仅为原油产量,不含成品油) 进口量 Imports 从国外进口的原油及石油产品总量 出口量(-) Exports (-) 出口到国外的原油及石油产品总量(符号“-”表示在平衡表中需扣除) 年初年末库存差额 Stock Changes in the Year 年初库存与年末库存的差值(正数表示库存减少,负数表示库存增加) 消费量 Consumption 国内实际消费的石油总量(包含各行业消费及加工转换损耗) 4.1.2 2. 分行业消费量(中英文对照)
行业分类(中文) 行业分类(英文) 解释 农、林、牧、渔业 Agriculture, Forestry, Animal Husbandry and Fishery 农业机械、渔业船舶等使用的燃油消耗 工业 Industry 制造业、采矿业、能源工业等生产过程中的石油消耗 建筑业 Construction 工程机械、施工设备等使用的燃油消耗 交通运输、仓储和邮政业 Transport, Storage and Post 汽车、船舶、飞机、物流运输等燃油消耗 批发和零售业、住宿和餐饮业 Wholesale and Retail Trades, Hotels and Catering Services 商业活动中的燃油及能源消耗 其他 Other Sectors 未明确分类的其他行业石油消费 居民生活 Household Consumption 家庭用车、取暖等生活用油 4.1.3 3. 消费用途分类
指标名称(中文) 指标名称(英文) 解释 终端消费 Final Consumption 直接用于最终需求的石油消费(如工业用电、交通燃油等) #工业 Industry 终端消费中工业领域的占比(子分类) 中间消费(用于加工转换) Intermediate Consumption (Consumed in Transformation) 石油作为原料用于加工成其他能源(如发电、制气等) 火力发电 Thermal Power 用于火力发电的石油消耗量 供热 Heating 用于区域供暖的石油消耗量 制气 Gas Production 用于生产煤制气、液化气的石油消耗量 炼油损失量 Losses in Petroleum Refining 石油炼化过程中的工艺损耗 损失量 Other Losses 运输、储存等其他环节的损失量 4.1.4 4. 其他关键指标
指标名称(中文) 指标名称(英文) 解释 平衡差额 Balance 供需平衡结果,计算公式:
平衡差额 = 可供量 - 消费量
- 正值:供大于求(盈余)
- 负值:供不应求(缺口)
注 Note 特别说明:生产量仅指原油产量,不含成品油加工量 - 正值:供大于求(盈余)
# 加载必要的包
library(readxl) # 读取Excel文件
library(tidyverse) # 数据处理和可视化
library(ggthemes) # 主题美化
file_path <- "石油平衡表.xlsx"
# 读取第一张表(跳过前4行标题)
raw_data <- read_excel(file_path, sheet = 1, skip = 4, col_names = TRUE)
# 清理列名(处理中英文混合和特殊符号)
colnames(raw_data) <- c(
"item_cn", "item_en", "1990", "1995", "2000", "2005",
"2010", "2015", "2020", "2021", "2022"
)
# 转换为长格式(便于ggplot2绘图)
long_data <- raw_data %>%
pivot_longer(
cols = `1990`:`2022`,
names_to = "year",
values_to = "value"
) %>%
mutate(year = as.numeric(year)) %>%
filter(!is.na(value))
df <- long_data
DT::datatable(df)4.2 图形3——平衡差热力图
library(tidyverse)
library(ggplot2)
# 确保数据已正确读取并转换类型
data <- read_excel("石油平衡表.xlsx", sheet = 1, skip = 4) %>%
rename(item_cn = "项目", item_en = "Item") %>%
pivot_longer(
cols = `1990`:`2022`,
names_to = "year",
values_to = "value"
) %>%
mutate(
year = as.numeric(year),
value = as.numeric(value) # 关键修复:强制转换为数值型
)
# 绘制热力图(修正版)
ggplot(
data %>% filter(item_en == "Balance"),
aes(x = year, y = 1, fill = value)
) +
geom_tile(width = 0.9, height = 0.5) +
geom_text(
aes(label = round(value, 0)), # 显示数值标签
color = "black",
size = 4
) +
scale_fill_gradient2(
low = "red",
mid = "white",
high = "blue",
midpoint = 0, # 以0为中点
limits = c(-6000, 6000) # 根据数据范围调整
) +
labs(
title = "中国石油平衡差额 (1990-2022)",
subtitle = "正值表示供大于求,负值表示供不应求",
fill = "差额 (万吨)"
) +
theme_void() +
theme(
plot.title = element_text(hjust = 0.5, face = "bold"),
legend.position = "bottom"
)图形解读:
4.2.1 图表内容解析
标题与说明:
标题:
中国石油平衡差额 (1990-2022)图例:
正值(蓝色):供大于求
负值(红色):供不应求
白色:接近平衡(差额为0)
数据展示:
热力图横向展示1990-2022年的平衡差额,数值标注在方块上(如
-51、2185等)。颜色渐变范围:
-6000(深红)到6000(深蓝)。
4.2.2 关键发现
长期趋势:
1990-2015年:差额较小(-272~135万吨),供需基本平衡。
2020年:显著盈余(2185万吨),可能因疫情导致需求骤降。
2021-2022年:回归平衡(655~1489万吨)。
极端年份:
年份 差额(万吨) 原因分析 1990 -51 生产量不足,依赖进口 2020 2185 疫情抑制消费,库存积压 2015 -272 经济增速放缓,进口减少
5 样本相似性可视化
5.1 案例数据解释与展示
5.1.1 1. 供需总量指标
指标名称(中文) 指标名称(英文) 解释 可供量 Available for Consumption 国内石油实际可使用的总量,计算公式: 可供量 = 生产量 + 进口量 - 出口量 + 库存变化生产量 Production 国内原油产量(注脚说明:仅为原油产量,不含成品油) 进口量 Imports 从国外进口的原油及石油产品总量 出口量(-) Exports (-) 出口到国外的原油及石油产品总量(符号“-”表示在平衡表中需扣除) 年初年末库存差额 Stock Changes in the Year 年初库存与年末库存的差值(正数表示库存减少,负数表示库存增加) 消费量 Consumption 国内实际消费的石油总量(包含各行业消费及加工转换损耗) 5.1.2 2. 分行业消费量(中英文对照)
行业分类(中文) 行业分类(英文) 解释 农、林、牧、渔业 Agriculture, Forestry, Animal Husbandry and Fishery 农业机械、渔业船舶等使用的燃油消耗 工业 Industry 制造业、采矿业、能源工业等生产过程中的石油消耗 建筑业 Construction 工程机械、施工设备等使用的燃油消耗 交通运输、仓储和邮政业 Transport, Storage and Post 汽车、船舶、飞机、物流运输等燃油消耗 批发和零售业、住宿和餐饮业 Wholesale and Retail Trades, Hotels and Catering Services 商业活动中的燃油及能源消耗 其他 Other Sectors 未明确分类的其他行业石油消费 居民生活 Household Consumption 家庭用车、取暖等生活用油 5.1.3 3. 消费用途分类
指标名称(中文) 指标名称(英文) 解释 终端消费 Final Consumption 直接用于最终需求的石油消费(如工业用电、交通燃油等) #工业 Industry 终端消费中工业领域的占比(子分类) 中间消费(用于加工转换) Intermediate Consumption (Consumed in Transformation) 石油作为原料用于加工成其他能源(如发电、制气等) 火力发电 Thermal Power 用于火力发电的石油消耗量 供热 Heating 用于区域供暖的石油消耗量 制气 Gas Production 用于生产煤制气、液化气的石油消耗量 炼油损失量 Losses in Petroleum Refining 石油炼化过程中的工艺损耗 损失量 Other Losses 运输、储存等其他环节的损失量 5.1.4 4. 其他关键指标
指标名称(中文) 指标名称(英文) 解释 平衡差额 Balance 供需平衡结果,计算公式:
平衡差额 = 可供量 - 消费量
- 正值:供大于求(盈余)
- 负值:供不应求(缺口)
注 Note 特别说明:生产量仅指原油产量,不含成品油加工量 - 正值:供大于求(盈余)
# 加载必要的包
library(readxl) # 读取Excel文件
library(tidyverse) # 数据处理和可视化
library(ggthemes) # 主题美化
file_path <- "石油平衡表.xlsx"
# 读取第一张表(跳过前4行标题)
raw_data <- read_excel(file_path, sheet = 1, skip = 4, col_names = TRUE)
# 清理列名(处理中英文混合和特殊符号)
colnames(raw_data) <- c(
"item_cn", "item_en", "1990", "1995", "2000", "2005",
"2010", "2015", "2020", "2021", "2022"
)
# 转换为长格式(便于ggplot2绘图)
long_data <- raw_data %>%
pivot_longer(
cols = `1990`:`2022`,
names_to = "year",
values_to = "value"
) %>%
mutate(year = as.numeric(year)) %>%
filter(!is.na(value))
df <- long_data
DT::datatable(df)5.2 图形4——2022年消费结构饼图
ggplot(
data %>%
filter(year == 2022, str_detect(item_cn, "农、林、牧、渔业|工业|建筑业|交通运输|批发和零售业|其他|居民生活")),
aes(x = "", y = value, fill = item_cn)
) +
geom_bar(stat = "identity") +
coord_polar("y") +
labs(title = "2022年石油消费行业占比") +
theme_void()图形解读:
2022年分行业消费量如下:
行业 消费量(万吨) 占比 工业 31,339 46.1% 交通运输、仓储邮政 20,006 29.4% 居民生活 7,051 10.4% 建筑业 3,454 5.1% 农、林、牧、渔业 2,024 3.0% 其他 3,532 5.2% 批发零售、住宿餐饮 643 0.9%
5.2.1 关键分析结果
行业占比排名:
工业(46.1%) > 交通运输(29.4%) > 居民生活(10.4%)。
农业和批发零售业占比不足5%。
6 时间序列可视化
6.1 案例数据解释与展示
6.1.1 1. 供需总量指标
指标名称(中文) 指标名称(英文) 解释 可供量 Available for Consumption 国内石油实际可使用的总量,计算公式: 可供量 = 生产量 + 进口量 - 出口量 + 库存变化生产量 Production 国内原油产量(注脚说明:仅为原油产量,不含成品油) 进口量 Imports 从国外进口的原油及石油产品总量 出口量(-) Exports (-) 出口到国外的原油及石油产品总量(符号“-”表示在平衡表中需扣除) 年初年末库存差额 Stock Changes in the Year 年初库存与年末库存的差值(正数表示库存减少,负数表示库存增加) 消费量 Consumption 国内实际消费的石油总量(包含各行业消费及加工转换损耗) 6.1.2 2. 分行业消费量(中英文对照)
行业分类(中文) 行业分类(英文) 解释 农、林、牧、渔业 Agriculture, Forestry, Animal Husbandry and Fishery 农业机械、渔业船舶等使用的燃油消耗 工业 Industry 制造业、采矿业、能源工业等生产过程中的石油消耗 建筑业 Construction 工程机械、施工设备等使用的燃油消耗 交通运输、仓储和邮政业 Transport, Storage and Post 汽车、船舶、飞机、物流运输等燃油消耗 批发和零售业、住宿和餐饮业 Wholesale and Retail Trades, Hotels and Catering Services 商业活动中的燃油及能源消耗 其他 Other Sectors 未明确分类的其他行业石油消费 居民生活 Household Consumption 家庭用车、取暖等生活用油 6.1.3 3. 消费用途分类
指标名称(中文) 指标名称(英文) 解释 终端消费 Final Consumption 直接用于最终需求的石油消费(如工业用电、交通燃油等) #工业 Industry 终端消费中工业领域的占比(子分类) 中间消费(用于加工转换) Intermediate Consumption (Consumed in Transformation) 石油作为原料用于加工成其他能源(如发电、制气等) 火力发电 Thermal Power 用于火力发电的石油消耗量 供热 Heating 用于区域供暖的石油消耗量 制气 Gas Production 用于生产煤制气、液化气的石油消耗量 炼油损失量 Losses in Petroleum Refining 石油炼化过程中的工艺损耗 损失量 Other Losses 运输、储存等其他环节的损失量 6.1.4 4. 其他关键指标
指标名称(中文) 指标名称(英文) 解释 平衡差额 Balance 供需平衡结果,计算公式:
平衡差额 = 可供量 - 消费量
- 正值:供大于求(盈余)
- 负值:供不应求(缺口)
注 Note 特别说明:生产量仅指原油产量,不含成品油加工量 - 正值:供大于求(盈余)
# 加载必要的包
library(readxl) # 读取Excel文件
library(tidyverse) # 数据处理和可视化
library(ggthemes) # 主题美化
file_path <- "石油平衡表.xlsx"
# 读取第一张表(跳过前4行标题)
raw_data <- read_excel(file_path, sheet = 1, skip = 4, col_names = TRUE)
# 清理列名(处理中英文混合和特殊符号)
colnames(raw_data) <- c(
"item_cn", "item_en", "1990", "1995", "2000", "2005",
"2010", "2015", "2020", "2021", "2022"
)
# 转换为长格式(便于ggplot2绘图)
long_data <- raw_data %>%
pivot_longer(
cols = `1990`:`2022`,
names_to = "year",
values_to = "value"
) %>%
mutate(year = as.numeric(year)) %>%
filter(!is.na(value))
df <- long_data
DT::datatable(df)6.2 图形5——生产与消费相关性散点图
prod_cons <- data %>%
filter(item_en %in% c("Production", "Consumption")) %>%
pivot_wider(names_from = item_en, values_from = value)
ggplot(prod_cons, aes(x = Production, y = Consumption)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE, color = "red") +
labs(title = "生产量与消费量相关性")- 图形解读:
消费量增速(+492%)远高于生产量增速(+48%),导致供需缺口扩大。
2020年后生产量下降,但消费量仍增长,反映进口依赖加深。