数据可视化期末报告

Author

221527109付楚妍

1 报告要求

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

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

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

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

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

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

  • 评分标准:

    • 每章节图形各20分

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

    • 数据独特性强10%

    • 图形个性化强15%

2 类别数据可视化

2.1 案例数据解释与展示

  • 这一份数据是从中国知网的中国经济社会大数据研究的金融专题数据库里加载出来的。

  • 这里有3种类型的银行(中资大型银行、中资小型银行和中资大型银行),每种类型的银行有3种资产分类(国外资产、储备资产和其他资产),记录了每一种类型银行的每一种资产从2009年到2017年的数据。

  • 行变量按时间排序,每行代表某一年份所有银行类型和资产类型的数据;列变量是3种银行类型对应的3种资产类型。

  • 现研究按银行类型分布的资产情况。

# 转换数据为长格式,并提取银行类型和资产类型
data1_1 <- data1 %>%
  pivot_longer(
    cols = -年份,
    names_to = "资产类别",
    values_to = "金额"
  ) %>%
  mutate(
    银行类型 = case_when(
      str_detect(资产类别, "大型") ~ "大型",
      str_detect(资产类别, "中型") ~ "中型",
      str_detect(资产类别, "小型") ~ "小型",
      TRUE ~ NA_character_
    ),
    资产类型 = case_when(
      str_detect(资产类别, "国外资产") ~ "国外资产",
      str_detect(资产类别, "储备资产") ~ "储备资产",
      str_detect(资产类别, "其他资产") ~ "其他资产",
      TRUE ~ NA_character_
    ),
    金额 = as.numeric(金额)  # 确保金额是数值型
  ) %>%
  select(年份, 银行类型, 资产类型, 金额) %>%
  mutate(
    银行类型 = factor(银行类型, levels = c("大型", "中型", "小型")),
    资产类型 = factor(资产类型, levels = c("国外资产", "储备资产", "其他资产"))
  )

# 按银行类型和资产类型汇总金额
df <- data1_1 %>%
  group_by(银行类型, 资产类型) %>%
  summarise(金额 = sum(金额), .groups = "drop") %>%
  mutate(
    银行类型 = fct_inorder(银行类型),
    资产类型 = fct_rev(资产类型)
  )
datatable(data1_1,rownames = FALSE)

2.2 图形1——玫瑰图

p1 <- ggRose(data1_1, 
             aes(x = 银行类型, y = 金额, fill = 资产类型),
             stat = "identity",
             palette = "Blues") +
  ylab("资产金额(亿元)") +
  guides(fill = guide_legend(title = "资产类型")) +
  theme(legend.position = "bottom",
        plot.title = element_text(size = 10),
        axis.text.x = element_text(size = 8, color = "black")) +
  ggtitle("按银行类型分布的资产情况")

print(p1)

  • 图形解读:大型银行中储备资产占比最高,远高于其他两类资产;中型银行的储备资产仍占主导,国外资产显著低于大型银行;小型银行的储备资产规模接近中型银行,但 国外资产几乎可忽略。

  • 观点:

    1. 储备资产是绝对主力。所有银行的储备资产规模均远高于其他类型,尤其是 大型银行,反映其在金融体系中的核心地位。
    2. 银行规模决定资产结构。大型银行的国际化程度更高,同时承担更多系统性储备职能;小型银行的业务高度本土化,因此国外资产极少,储备资产占比虽高但总量有限。

3 数据分布可视化

3.1 案例数据解释与展示

  • 这一份数据是从中国知网的中国经济社会大数据研究的环境专题数据库里加载出来的,记录了2006年到2017年,城市供水总量和城市售水量的数据。

  • 现要通过城市供水总量的均值、中位数、偏度和峰度分析供水量的分布形态。

  • 需要对data2进行数据清洗,只选取城市供水总量和城市售水量这两个变量,然后将城市供水量转化为数值型数据,并计算供水总量的描述型统计量。

data2_1 <- data2[, c("城市供水总量", "城市售水量")]
mytheme <- theme_minimal() +
  theme(
    plot.title = element_text(size = 12, face = "bold"),
    axis.title = element_text(size = 10),
    axis.text = element_text(size = 8),
    legend.position = "none"
  )# 自定义主题
calc_stats <- function(x) {
  list(
    mean = mean(x),
    median = median(x),
    skew = round(skewness(x), 4),
    kurt = round(kurtosis(x), 4),
    max = max(x)
  )# 计算统计量函数
}
data2$城市供水总量 <- as.numeric(data2$城市供水总量) #将变量转化为数值型
supply_stats <- calc_stats(data2$城市供水总量)# 计算供水总量统计量
datatable(data2_1,rownames = FALSE)

3.2 图形2——单变量直方图

p1<- ggplot(data2, aes(x = 城市供水总量)) +
  mytheme +
  geom_histogram(aes(y = ..density..), 
                 fill = "lightblue", 
                 color = "gray50", 
                 bins = 12, 
                 alpha = 0.7) +
  geom_density(color = "blue2", size = 0.8) +
  geom_vline(xintercept = supply_stats$mean, 
             linetype = "dashed", 
             color = "red", 
             size = 0.7) +
  geom_point(aes(x = supply_stats$median, y = 0), 
             shape = 18, 
             size = 4, 
             color = "darkorange") +
  annotate("text", 
           x = supply_stats$max * 0.7, 
           y = Inf,
           label = sprintf("均值 = %.1f\n中位数 = %.1f\n偏度 = %.2f\n峰度 = %.2f",
                          supply_stats$mean,
                          supply_stats$median,
                          supply_stats$skew,
                          supply_stats$kurt),
           hjust = 0, 
           vjust = 1.2, 
           size = 3.5) +
  labs(title = "城市供水总量分布", 
       x = "供水总量(万立方米)", 
       y = "密度")
p1

  • 图形解读:直方图显示2006-2017年城市供水总量的频数分布;密度曲线描述数据分布的平滑概率密度,与直方图趋势一致;红色虚线为均值线,均值是5,335,389.1万立方米;橙色菱形点为中位数位置,中位数为5,301,674.0万立方米。
  • 右偏分布(均值 > 中位数):少数年份(如2017年5,937,591万立方米)拉高整体均值,反映供水系统存在极端高负荷情况,表明需关注高负荷年份的水资源调配能力。
  • 峰度分析(负值):分布形态较正态分布更扁平,实际供水量波动范围较大。

4 变量关系可视化

4.1 案例数据解释与展示

  • 这一份数据是从中国知网的中国经济社会大数据研究的农产品成本收益专题数据库里加载出来的

  • 记录了2010年到2020年,西红柿每亩产值、每亩生产成本、每亩物质与服务费用、每亩流转地租金、每亩自营地折租与每亩现金收益的数据。

  • 现研究每亩产值与每亩物质服务费用的关系。

library(plotly)
library(ggExtra)

data3<-read_excel("E:\\数据可视化\\期末报告\\data3.xlsx") 
data3 <- data3 %>%
  mutate(across(-时间, as.numeric))
datatable(data3)

4.2 图形3——两变量散点图+地毯图+线性拟合+边际图

p1 <- ggplot(data3, aes(x = 每亩产值, y = 每亩物质与服务费用)) +
  geom_point(shape = 21, size = 3, fill = "deepskyblue", alpha = 0.8) +
  geom_rug(color = "steelblue") +
  stat_smooth(method = "lm", color = "red", fill = "lightblue") +
  annotate("point",  # 关键修改处
           x = mean(data3$每亩产值),
           y = mean(data3$每亩物质与服务费用),
           shape = 23, fill = "gold", size = 5) +
  labs(title = "产值与物质服务费用关系",
       x = "每亩产值(元)",
       y = "每亩物质服务费用(元)")

ggMarginal(p1, type = "densigram", color = "grey30", fill = "lightblue")

  • 图形解读:蓝色散点:每个点代表某年的每亩产值与每亩物质与服务费用的对应关系;红色回归线显示两者间的线性趋势,斜率为正表示产值增加时,物质费用也倾向于增加;金色菱形点标注均值中心位置,代表平均产值与平均物质费用。
  • 边际图:顶部密度曲线代表每亩产值的分布,右偏形态表明存在高产值年份;右侧密度曲线代表每亩物质与服务费用的分布,近似正态。
  • 灰色地毯线:沿坐标轴显示数据点的密度分布,补充散点的局部信息。
  • 正向相关性:回归线斜率为正,表明物质费用投入与产值增长呈正相关。
  • 均值中心:均值点位于图形中部,说明数据分布相对均衡,无极端偏离。

5 样本相似性可视化

5.1 案例数据解释与展示

  • 这一份数据是从中国知网的中国经济社会大数据研究的农产品成本收益专题数据库里加载出来的

  • data4里包含红毛茶、绿毛茶和乌龙茶,分别有三个指标,产值、成本和费用,共4年。

  • 现研究3种茶叶的脸谱图,要将数据转换为适合多变量可视化的矩阵格式,行=茶类,列=指标。

data4<-read_excel("E:\\数据可视化\\期末报告\\data4.xlsx") 
data4<- data4 %>%
  mutate(across(contains(c("产值", "成本", "费用")), as.numeric)) %>%
  # 首先将宽格式转为长格式
  pivot_longer(
    cols = everything(),
    names_to = c("茶类", "指标"),
    names_sep = "每亩",
    values_to = "值"
  ) %>%
  mutate(
    茶类 = str_extract(茶类, "红毛茶|绿毛茶|乌龙茶"),
    指标 = str_remove(指标, "^_")
  ) %>%
  # 计算各茶类各指标的均值
  summarise(
    均值 = mean(值, na.rm = TRUE),
    .by = c(茶类, 指标)
  ) %>%
  # 转换回宽格式
  pivot_wider(
    names_from = "指标",
    values_from = "均值"
  ) %>%
  # 转换为矩阵格式
  column_to_rownames("茶类") %>%
  as.matrix()

datatable(data4)

5.2 图形4——脸谱图

faces(
  data4,
  face.type = 1,              # 脸型代表产值
  ncol.plot = 3,              # 每行3个脸谱
  scale = TRUE,               # 数据标准化
  main = "茶叶生产指标脸谱图(脸型=产值,眼睛=成本,鼻子=雇工费用)",
  col.face = c("#E41A1C", "#4DAF4A", "#377EB8"),  # 红、绿、蓝
  cex = 1                     # 标签字体大小
)

effect of variables:
 modified item       Var       
 "height of face   " "产值"    
 "width of face    " "生产成本"
 "structure of face" "雇工费用"
 "height of mouth  " "产值"    
 "width of mouth   " "生产成本"
 "smiling          " "雇工费用"
 "height of eyes   " "产值"    
 "width of eyes    " "生产成本"
 "height of hair   " "雇工费用"
 "width of hair   "  "产值"    
 "style of hair   "  "生产成本"
 "height of nose  "  "雇工费用"
 "width of nose   "  "产值"    
 "width of ear    "  "生产成本"
 "height of ear   "  "雇工费用"
  • 图形解读:脸型代表产值,产值越高,脸型越圆润,如绿毛茶若产值最高,其脸型应最饱满;眼睛大小 代表生产成本,成本越高,眼睛越大,如红毛茶若成本突出,眼睛应显著更大;鼻子大小 代表雇工费用,费用越高,鼻子越宽,如乌龙茶若费用高,鼻子应更突出。

  • 红毛茶:脸型较窄(产值较低)、眼睛较大(生产成本高)、鼻子中等(雇工费用适中)。可能属于高成本、中等用工、低产值的茶类。

  • 绿毛茶:脸型最圆润(产值最高)、眼睛较小(成本低)、鼻子最小(雇工费用低)。可能是高效低成本生产,产值表现最佳。

  • 乌龙茶:脸型中等(产值居中)、眼睛中等(成本居中)、鼻子最大(雇工费用高)。用工成本是其主要负担,但产值和生产成本平衡。

6 时间序列可视化

6.1 案例数据解释与展示

  • 这一份数据是从中国知网的中国经济社会大数据研究的农科技专题数据库里加载出来的。

  • 里面是数据是2008到2022年,国家自然科学基金资助项目经费、面上项目经费、重点项目经费、重大项目经费与联合基金项目经费的支出情况。

  • 图一研究国家自然科学基金资助项目经费和联合基金项目经费的经费趋势,图二研究各类项目的经费趋势

data5<-read_excel("E:\\数据可视化\\期末报告\\data5.xlsx") 
data5_clean <- data5 %>%
  mutate(across(-时间, as.numeric))

df1 <- data5_clean |> 
  select(时间, 国家自然科学基金资助项目经费, 联合基金项目经费) |> 
  pivot_longer(
    cols = -时间,
    names_to = "指标",
    values_to = "经费"
  ) |> 
  mutate(指标 = fct_inorder(指标))

df2 <- data5_clean |> 
  select(时间, 面上项目经费:联合基金项目经费) |> 
  pivot_longer(
    cols = -时间,
    names_to = "指标",
    values_to = "经费"
  ) |> 
  mutate(指标 = fct_inorder(指标))
datatable(df1)
datatable(df2)

6.2 图形5——折线图

mytheme <- theme(
  legend.position = c(0.2, 0.8),   
  legend.background = element_blank(),
  plot.title = element_text(size = 10, hjust = 0.5)
)
#图1:总经费 vs 联合基金项目经费
p1 <- ggplot(df1, aes(x = 时间, y = 经费, color = 指标)) +
  geom_line(linewidth = 0.8) +
  geom_point(aes(shape = 指标), size = 2) +
  labs(
    title = "(a) 总经费与联合基金项目经费趋势",
    x = "年份", y = "经费(万元)",
    color = "指标", shape = "指标"
  ) +
  scale_y_continuous(
    labels = label_number(scale = 1e-4, suffix = "万"),  # 显示为“XX万”
    limits = c(0, max(df1$经费) * 1.1  # 扩展y轴范围
  )+mytheme
)

# 图2:所有细分项目经费对比
p2 <- ggplot(df2, aes(x = 时间, y = 经费, color = 指标)) +
  geom_line(linewidth = 0.8) +
  geom_point(aes(shape = 指标), size = 2) +
  labs(
    title = "(b) 各类项目经费趋势",
    x = "年份", y = "经费(万元)",
    color = "指标", shape = "指标"
  ) +
  scale_y_continuous(
    labels = label_number(scale = 1e-4, suffix = "万"),
    limits = c(0, max(df2$经费) * 1.1
  )+mytheme
)
gridExtra::grid.arrange(p1, p2, ncol = 2)

  • 图形解读:
  • 总经费与联合基金项目:总经费持续增长:从2008年的63.1亿元增长至2022年的328.2亿元,增长约5.2倍,反映国家对科研投入的显著增加。联合基金项目增速更快:2008年经费仅1.67亿元,2022年达29.96亿元,增长约17倍。
  • 各类项目经费:面上项目主导但占比下降,不过始终是经费最高的项目。重点项目稳定:经费波动较小,体现基础研究的稳定支持。重大项目经费增长平缓。联合基金后来居上,2022年经费已超过重大项目,成为第二大项目类型。
  • 趋势一致性:所有项目经费均呈增长态势,体现科研投入持续加码。
  • 结构变化:从“面上项目绝对主导”转向“面上+联合基金双核心”,反映科研资助多元化。