数据可视化期末报告

Author

221527226经统2班钟浩声

1 报告要求

  • 期末实验报告由5章节5个图形组成,每个章节需要作一个图形。

  • 每个章节选择作什么图自主选择,作图前补充完整图形标题名称,例如:图形1——多变量条形图。

  • 案例数据自主收集,不同章节可以公用一个数据集。但同学间不允许使用相同数据集。

  • 每个章节的数据集合需要通过datatable 函数展示,并简要解释数据来源和变量意义。

  • 每个输出图形后需要对图形作简要解读,最少需针对图形提出一个观点。

  • 渲染html文件保留代码展示,6月22日前将发布网址提交至共享文档“8、期末报告” 列中。

  • 评分标准:

    • 每章节图形各20分

    • 能有效输出图形和合理解释75%

    • 数据独特性强10%

    • 图形个性化强15%

2 类别数据可视化

2.1 案例数据解释与展示

#install.packages("datatable")
library(tidyverse)
library(sunburstR)
library(d3r)
library(data.table)

data4 <- read.csv("E:/数据可视化/期末报告/数据/data4.csv", 
                  stringsAsFactors = TRUE,
                  fileEncoding = "GBK")  # 或 "GB2312"、"CP936"
df<-data4%>%select(区域划分,地带划分,地区,天然气)  # 根据需要调整列变量的位置
df_tree<-d3_nest(df,value_cols="天然气")             # 将数据框转换为“d3.js”层次结构

2.2 图形1——

# 绘制旭日图
library(sunburstR)
sunburst(data=df_tree,           # 绘制旭日图
   valueField="天然气",    # 计算大小字段的字符为vSize
   count=TRUE,                   # 在解释中包括计数和总数
   sumNodes=TRUE)                # 默认总和节点=TRUE
Legend
  • 图形解读:
  • 西部地带占比比较大

3 数据分布可视化

3.1 案例数据解释与展示

  • 广东省居民粮食以及蔬果的各年消费指数
# A tibble: 21 × 2
   粮食类指数 鲜果类指数
        <dbl>      <dbl>
 1      1224.      1298.
 2      1403.      1202.
 3      1223.      1191.
 4      1222.      1409.
 5      1253       1205.
 6      1298.      1301.
 7      1252.      1257.
 8      1290.      1336.
 9      1353.      1353.
10      1260.      1186.
# ℹ 11 more rows

3.2 图形2——

df <- data2 |>
  gather(粮食类指数,鲜果类指数,key=指标,value=指标值)|>   # 融合数据
  ddply("指标",transform,标准化值 = scale(指标值))

# 图(a)叠加直方图
p1<-ggplot(df)+aes(x=指标值,y=..density..,fill=指标)+
  geom_histogram(position="identity",color="gray60",alpha=0.5)+
  scale_fill_brewer(palette = 'Set3')+
  theme(legend.position=c(0.8,0.8),# 设置图例位置
       legend.background=element_rect(fill="grey90",color="grey"))+
                                                # 设置图例背景色和边框颜色
  ggtitle("(a) 原来数据叠加直方图")

# 图(a)叠加直方图
p2<-ggplot(df)+aes(x=标准化值,y=..density..,fill=指标)+
  geom_histogram(position="identity",color="gray60",alpha=0.5)+
  scale_fill_brewer(palette = 'Set3')+
  theme(legend.position=c(0.8,0.8),# 设置图例位置
       legend.background=element_rect(fill="grey90",color="grey"))+
                                                # 设置图例背景色和边框颜色
  ggtitle("(b) 标准化数据叠加直方图")


gridExtra::grid.arrange(p1,p2,ncol=2)        # 组合图形

  • 图形解读:
  • 该旭日图通过区域→地带→地区的层级嵌套圆环,以 “天然气” 数值定面积,直观呈现资源分布。从社会意义看,能助力:
    • 能源布局优化:识别资源集中 / 短缺区域,辅助政策制定者合理调配、补短板;

    • 区域发展均衡性:对比不同地区资源占比,反映能源公平分配问题,推动协同发展;

    • 可持续规划:基于分布差异,引导天然气高效利用、储备布局,支撑碳中和等社会目标。

4 变量关系可视化

4.1 案例数据解释与展示

  • 各地区区域能源数据
library(tidyverse)
library(DT)
library(RColorBrewer)
library(gridExtra)                   # 为使用图形组合函数grid.arrange
library(ggiraphExtra)
library(ggpubr)
library(ggExtra)                     # 为散点图添加边际直方图和核密度曲线图
library(ggChernoff)                  # 笑脸散点图
library(GGally)                      # 散点图矩阵
library(corrgram)                    # 相关系数矩阵
library(corrplot)   
library(DescTools)  
library(viridis)                     # 色盲友好的颜色配色包
library(IDPmisc)                     # 大数据集散点图矩阵
library(scatterplot3d)               # 3D散点图
library(scatterpie)                  # 散点饼图


data4 <- read.csv("E:/数据可视化/期末报告/数据/data4.csv", 
                  stringsAsFactors = TRUE,
                  fileEncoding = "GBK")  # 或 "GB2312"、"CP936"

data4
     地区 区域划分 地带划分   原油 原油加工    原煤 发电量 天然气 太阳能发电量
1    北京     华北 东部地带    0.0    340.0     0.0  170.9    4.3         9441
2    天津     华北 东部地带 1594.3    731.3     0.0  328.2   17.4        76401
3    河北     华北 东部地带  226.5   1040.5  1926.0 1543.5    2.6      1012812
4    山西     华北 中部地带    0.0      0.0 57751.6 1769.9   56.8       710893
5  内蒙古     华北 西部地带   47.6    199.2 50399.2 2946.2  122.2       821595
6    辽宁     东北 东部地带  425.0   4216.8  1191.9  877.8    3.9       194999
7    吉林     东北 中部地带  175.0    408.4   384.9  436.0    8.2       183587
8  黑龙江     东北 中部地带 1251.2    642.5  3044.6  475.4   23.1       238526
9    上海     华东 东部地带   19.7   1042.4     0.0  412.6   15.1        24629
10   江苏     华东 东部地带   66.7   2325.6   355.7 2584.0    0.4       474147
11   浙江     华东 东部地带    0.0   3173.9     0.0 1930.6    0.0       682413
12   安徽     华东 中部地带    0.0    327.4  4820.0     NA    1.2           NA
     柴油 核能发电量 水力发电量 汽油产量 液化天然气 液化石油气 火力发电量
1    70.1        0.0        3.8     86.7       0.00       39.2      166.0
2   142.6        0.0        0.0    163.5       0.00       44.0      309.4
3   302.2        0.0       21.0    269.5      19.08       67.7     1158.1
4     0.0        0.0       13.4      0.0     108.17        0.0     1482.5
5    97.0        0.0       13.8     77.0     226.78       19.1     2350.4
6  1149.9      211.2       13.0    659.2       0.67      131.9      519.3
7   124.8        0.0       46.1     96.8       6.37        5.7      268.3
8   162.6        0.0       17.3    196.6       1.84       51.2      356.9
9   277.2        0.0        0.0    228.6       0.00       52.5      399.9
10  407.6      203.0       11.7    389.5       0.00       71.5     2083.7
11  664.6      321.1       65.5    433.9       0.00      524.9     1437.0
12   81.3         NA         NA    114.2       0.00       30.0         NA
   焦炭产量 煤层气产量 煤气产量 煤油产量 燃料油 石油沥青 石油焦 石脑油 风力发电
1       0.0       3.46      0.0     48.6    1.4      2.7   20.4   61.3      0.5
2      76.4       0.00    151.2     87.3   45.3      0.0   46.1  172.4     11.0
3    1900.6       0.05   1481.5     71.5  171.2     85.3   23.7   40.4    263.2
4    4127.9      43.76    564.7      0.0    0.0      0.0    0.0    6.6    202.7
5    2097.0       0.10    264.2      8.9    3.8      0.0    0.0   27.9    499.8
6     908.3       0.05    542.8    156.0  512.7    180.5  119.1  387.6    114.9
7     206.0       0.00     98.3     18.9   24.0      0.0   12.4   43.9    103.5
8     337.2       0.17     70.9     20.9   23.2      0.0    6.7   24.2     77.5
9     221.5       0.00    110.8    120.8   38.6     19.1   57.8   72.5     10.0
10    778.4       0.08    779.6    150.4  126.2    167.2   95.1  130.4    238.3
11     98.6       0.00     67.0    151.2  171.6    168.7  119.5  279.8     38.7
12       NA       1.21       NA     25.4   12.2       NA   14.2   18.3       NA

4.2 图形3——

df <- data4

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("(a) 散点图+地毯图+线性拟合+边际图")

ggMarginal(p1,type="densigram",color="grey50",fill="lightskyblue",alpha=0.5)

  • 图形解读:变量关系:原油与原油加工的整体趋势
    • 线性拟合趋势:红色拟合线几乎水平,说明 原油(横轴)与原油加工(纵轴)之间无明显线性关联 。即使原油量变化,原油加工量整体维持稳定水平,二者未呈现 “原油越多、加工量越高 / 越低” 的简单线性规律。

    • 散点分布:蓝色散点分散在拟合线上下,进一步验证关系不紧密 —— 原油量从 0 到 1500 变化时,加工量在 0 - 4000 波动,无持续上升 / 下降趋势。

5 样本相似性可视化

5.1 案例数据解释与展示

  • 各地区区域的能源数据
     地区 区域划分 地带划分   原油 原油加工    原煤 发电量 天然气 太阳能发电量
1    北京     华北 东部地带    0.0    340.0     0.0  170.9    4.3         9441
2    天津     华北 东部地带 1594.3    731.3     0.0  328.2   17.4        76401
3    河北     华北 东部地带  226.5   1040.5  1926.0 1543.5    2.6      1012812
4    山西     华北 中部地带    0.0      0.0 57751.6 1769.9   56.8       710893
5  内蒙古     华北 西部地带   47.6    199.2 50399.2 2946.2  122.2       821595
6    辽宁     东北 东部地带  425.0   4216.8  1191.9  877.8    3.9       194999
7    吉林     东北 中部地带  175.0    408.4   384.9  436.0    8.2       183587
8  黑龙江     东北 中部地带 1251.2    642.5  3044.6  475.4   23.1       238526
9    上海     华东 东部地带   19.7   1042.4     0.0  412.6   15.1        24629
10   江苏     华东 东部地带   66.7   2325.6   355.7 2584.0    0.4       474147
11   浙江     华东 东部地带    0.0   3173.9     0.0 1930.6    0.0       682413
12   安徽     华东 中部地带    0.0    327.4  4820.0     NA    1.2           NA
     柴油 核能发电量 水力发电量 汽油产量 液化天然气 液化石油气 火力发电量
1    70.1        0.0        3.8     86.7       0.00       39.2      166.0
2   142.6        0.0        0.0    163.5       0.00       44.0      309.4
3   302.2        0.0       21.0    269.5      19.08       67.7     1158.1
4     0.0        0.0       13.4      0.0     108.17        0.0     1482.5
5    97.0        0.0       13.8     77.0     226.78       19.1     2350.4
6  1149.9      211.2       13.0    659.2       0.67      131.9      519.3
7   124.8        0.0       46.1     96.8       6.37        5.7      268.3
8   162.6        0.0       17.3    196.6       1.84       51.2      356.9
9   277.2        0.0        0.0    228.6       0.00       52.5      399.9
10  407.6      203.0       11.7    389.5       0.00       71.5     2083.7
11  664.6      321.1       65.5    433.9       0.00      524.9     1437.0
12   81.3         NA         NA    114.2       0.00       30.0         NA
   焦炭产量 煤层气产量 煤气产量 煤油产量 燃料油 石油沥青 石油焦 石脑油 风力发电
1       0.0       3.46      0.0     48.6    1.4      2.7   20.4   61.3      0.5
2      76.4       0.00    151.2     87.3   45.3      0.0   46.1  172.4     11.0
3    1900.6       0.05   1481.5     71.5  171.2     85.3   23.7   40.4    263.2
4    4127.9      43.76    564.7      0.0    0.0      0.0    0.0    6.6    202.7
5    2097.0       0.10    264.2      8.9    3.8      0.0    0.0   27.9    499.8
6     908.3       0.05    542.8    156.0  512.7    180.5  119.1  387.6    114.9
7     206.0       0.00     98.3     18.9   24.0      0.0   12.4   43.9    103.5
8     337.2       0.17     70.9     20.9   23.2      0.0    6.7   24.2     77.5
9     221.5       0.00    110.8    120.8   38.6     19.1   57.8   72.5     10.0
10    778.4       0.08    779.6    150.4  126.2    167.2   95.1  130.4    238.3
11     98.6       0.00     67.0    151.2  171.6    168.7  119.5  279.8     38.7
12       NA       1.21       NA     25.4   12.2       NA   14.2   18.3       NA

5.2 图形4——

df<-filter(data4,地区%in%c("北京","天津","上海")) # 选出北京、天津和上海3个地区

# 设置图形主题
myangle<-seq(-20,-340,length.out=12)   # 设置标签角度,使之垂直于坐标轴
mytheme<-theme_bw()+                  # 使用黑白主题
   theme(legend.position="bottom",    # 设置图例位置
   axis.text.x=element_text(size=4,color="blue4",angle=myangle))
                                  # 设置坐标轴标签字体大小、颜色和和角度
# 图(a)使用原始数据
p1<-ggRadar(data=df,aes(group=地区),    # 按地区分组
  rescale=FALSE,                        # 数据不归一化
  ylim=c(-200,20000),                   # 设置y轴范围
  alpha=0,                              # 设置颜色透明度
  size=2)+                              # 设置点的大小
  mytheme+xlab("能源项目")+ylab("能源产量")+  # 设置x轴和y轴标签
  ggtitle("(a) 原始数据雷达图") # 添加标题

# 图(b)使用归一化数据
p2<-ggRadar(data=df,aes(group=地区),    # 按地区分组
  rescale=TRUE,                         # 数据标准化(缩放到[0,1]范围)
  ylim=c(-0.3,1),                       # 设置y轴范围
  alpha=0.3,                            # 设置颜色透明度
  size=2)+                              # 设置点的大小
  mytheme+xlab("能源项目")+ylab("归一化值")+
  ggtitle("(b) 归一化雷达图") # 添加标题

gridExtra::grid.arrange(p1,p2,ncol=2)       # 按2列组合图形p1和p2

  • 图形解读:
  • 上海:在多数能源项目上表现突出,能源产业布局全面且均衡,综合能源实力强。
  • 天津:在原油、原油加工等石油产业链相关项目优势明显,能源结构围绕石油加工构建。
  • 北京:部分能源生产类项目表现较弱,能源发展或更侧重非传统生产环节(如创新、管理等 ),与城市功能定位契合。

三地因城市定位和产业基础,能源发展各有侧重,上海全面、天津聚焦石油加工、北京侧重非生产类环节 。

6 时间序列可视化

6.1 案例数据解释与展示

6.2 图形5——

df <- data5 %>% 
  select(日期, PM2.5:臭氧浓度) %>% 
  filter(year(日期) == 2025) %>% 
  gather(PM2.5:臭氧浓度, key = "指标", value = "指标值")

# 绘制折线图,修改x轴为按日显示
p <- ggplot(df, aes(x = 日期, y = 指标值, color = 指标)) + 
  geom_line(size = 1) + 
  theme(
    legend.position = "none",
    axis.text.x = element_text(size = 5, angle = 90, hjust = 0.5, vjust = 1)
  ) + 
  theme(
    panel.grid.minor.x = element_blank(),
    panel.grid.minor.y = element_blank()
  ) + 
  # 修改日期间隔为1天,日期标签格式为"日"
  scale_x_date(
    expand = c(0, 0),
    date_breaks = "1 day",  # 改为每日显示
    date_labels = "%d"   # 日期标签格式改为"月-日"
  ) + 
  facet_wrap(~指标, ncol = 3, scales = "free")

p

  • 图形解读:

    1. PM10:指标值在 20 - 50 间频繁波动,有多次明显峰值,显示可吸入颗粒物浓度不稳定,受扬尘、工业排放等影响,污染时有反复。

    2. PM2.5:数值在 10 - 30 左右变动,波动形态与 PM10 有一定关联,因二者同属颗粒物污染,来源相似,不过 PM2.5 更易受机动车尾气、二次转化等影响,波动细节有差异。

    3. 臭氧浓度:数值相对高,在 50 - 150 间大幅波动,臭氧污染常与光照、温度等气象条件及挥发性有机物、氮氧化物排放相关,其大幅波动说明光化学污染过程活跃。

    4. 二氧化氮:指标值约 15 - 35 波动,二氧化氮主要来自交通尾气、工业炉窑等,其波动反映相关污染源排放及扩散条件变化。

    5. 二氧化硫:数值在 4.0 - 6.0 波动,二氧化硫多源于燃煤、工业燃烧等,相对窄幅波动,说明固定污染源排放相对稳定,但也有阶段性变化。

    6. 一氧化碳:指标值 0.4 - 0.7 波动,主要来自机动车尾气、燃料不完全燃烧,波动体现相关污染源排放及大气扩散情况。

    整体看,6 类污染物均有明显波动,无持续单调变化趋势,因来源、理化特性不同,各类污染物波动规律有别,反映广州 5 月空气质量受多种污染源、气象条件等综合影响,污染特征复杂 。