数据可视化期末报告

Author

221527229方景鑫

1 报告要求

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

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

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

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

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

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

  • 评分标准:

    • 每章节图形各20分

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

    • 数据独特性强10%

    • 图形个性化强15%

2 类别数据可视化

2.1 案例数据解释与展示

本章节使用全球主要科技企业的创新指数数据,包括研发投入,专利数量,AI应用程度等指标,用于分析不同行业的科技实力分布。

# 加载必要的包
library(dplyr)
library(ggplot2)
library(plotly)
library(DT)
library(scales)

# 创建示例数据
tech_innovation <- data.frame(
  企业名称 = c("微软", "谷歌", "亚马逊", "苹果", "华为", "腾讯", "阿里巴巴", "特斯拉", "Meta", "三星"),
  研发投入_亿美元 = c(213, 207, 617, 226, 238, 150, 120, 180, 185, 220),
  专利数量 = c(89000, 65000, 25000, 110000, 120000, 54000, 48000, 10000, 32000, 94000),
  AI应用程度 = c(90, 88, 85, 78, 82, 75, 72, 87, 83, 79),
  行业 = c("软件服务", "互联网服务", "电子商务", "消费电子", "通信设备", "互联网服务", "电子商务", "汽车制造", "社交媒体", "电子设备")
)

# 展示数据
datatable(tech_innovation, caption = "全球主要科技企业创新指数数据")
# 展示数据
datatable(
  tech_innovation, 
  caption = "全球主要科技企业创新指数数据",
  options = list(
    scrollX = TRUE,       # 启用水平滚动
    scrollY = "300px",    # 设置垂直滚动高度
    paging = TRUE,        # 启用分页
    pageLength = 10,      # 每页显示行数
    lengthMenu = c(5, 10, 20, 50)  # 分页选项
  )
)

2.2 图形1——交互式雷达图:科技企业创新能力评估

# 数据标准化
normalized_data <- tech_innovation %>%
  select(研发投入_亿美元, 专利数量, AI应用程度) %>%
  mutate_all(funs((. - min(.)) / (max(.) - min(.)))) %>%
  as.matrix()

rownames(normalized_data) <- tech_innovation$企业名称

# 创建雷达图
p <- plot_ly(
  type = 'scatterpolar',
  fill = 'toself'
)

# 为每个企业添加数据轨迹
for (i in 1:nrow(normalized_data)) {
  p <- add_trace(
    p,
    r = normalized_data[i, ],
    theta = colnames(normalized_data),
    name = rownames(normalized_data)[i],
    line = list(width = 2)
  )
}

# 设置布局
p <- layout(
  p,
  polar = list(
    radialaxis = list(visible = TRUE, range = c(0, 1))
  ),
  title = "全球科技企业创新能力雷达图",
  showlegend = TRUE
)

p
  • 图形解读:
  • 多维度对比:雷达图清晰展示了各企业在不同创新指标上的表现。例如,华为在专利数量上领先,而亚马逊在研发投入上远超其他企业。
  • 行业特性差异:通信设备和消费电子行业(如华为、苹果)在专利数量上优势明显,而互联网服务企业(如谷歌、Meta)在 AI 应用程度上得分更高。
  • 综合创新能力:微软在各项指标上表现较为均衡,显示出较强的综合创新能力。

3 数据分布可视化

3.1 案例数据解释与展示

  • 本章节使用全球主要城市的科技人才数据,包括人才数量、平均薪资、教育水平等指标,用于分析科技人才的地域分布特征。
# 创建示例数据
talent_data <- data.frame(
  城市 = c("旧金山", "纽约", "伦敦", "北京", "上海", "深圳", "东京", "新加坡", "柏林", "巴黎"),
  人才数量_万 = c(34.2, 28.5, 24.1, 52.3, 47.8, 38.6, 21.9, 18.7, 15.6, 17.2),
  平均薪资_万美元 = c(12.5, 10.8, 8.2, 6.8, 6.5, 7.2, 7.9, 8.5, 7.1, 7.4),
  硕士以上比例 = c(42, 38, 35, 32, 30, 34, 28, 36, 33, 31),
  研发投入_亿美元 = c(235, 187, 120, 195, 178, 156, 142, 98, 87, 102),
  生活成本指数 = c(168, 155, 132, 105, 108, 110, 120, 145, 115, 128)
)

# 展示数据
datatable(talent_data, caption = "全球主要城市科技人才数据")

3.2 图形2——带箱线图的小提琴图:全球科技人才薪资分布

# 创建带箱线图的小提琴图
p <- ggplot(talent_data, aes(x = "", y = 平均薪资_万美元)) +
  geom_violin(fill = "#69b3a2", alpha = 0.6) +
  geom_boxplot(width = 0.1, fill = "white", outlier.color = "red") +
  geom_jitter(aes(color = 城市), width = 0.2, size = 3, alpha = 0.8) +
  labs(
    title = "全球主要城市科技人才平均薪资分布",
    x = "",
    y = "平均薪资 (万美元/年)"
  ) +
  theme_minimal() +
  theme(
    legend.position = "bottom",
    legend.text = element_text(size = 8),
    plot.title = element_text(hjust = 0.5, size = 14, face = "bold"),
    axis.title.y = element_text(size = 12)
  ) +
  scale_color_brewer(palette = "Set3")

# 添加数据标签
avg_salary <- mean(talent_data$平均薪资_万美元)
p <- p + geom_hline(yintercept = avg_salary, linetype = "dashed", color = "black")
p <- p + annotate("text", x = 1.3, y = avg_salary + 0.3, 
                  label = paste("全球平均:", round(avg_salary, 1), "万美元"), 
                  size = 4)

# 转换为交互式图形
ggplotly(p)
  • 图形解读:
  • 薪资分布形态:小提琴图显示科技人才薪资呈现右偏分布,大部分城市的平均薪资集中在 7-10 万美元之间。
  • 异常值分析:旧金山的薪资水平显著高于其他城市,成为明显的异常值,反映出硅谷地区对高端科技人才的高投入。
  • 区域差异:欧美城市的薪资水平普遍高于亚洲城市,但亚洲城市(如北京、深圳)在人才数量上具有明显优势。

4 变量关系可视化

4.1 案例数据解释与展示

  • 本章节使用科技企业的财务数据,包括营收、利润、研发投入、员工数量等指标,用于分析各变量之间的关系。
# 创建示例数据
company_finance <- data.frame(
  企业名称 = c("微软", "谷歌", "亚马逊", "苹果", "华为", "腾讯", "阿里巴巴", "特斯拉", "Meta", "三星"),
  营收_亿美元 = c(2119, 2828, 5139, 3876, 1353, 870, 1240, 814, 1166, 2443),
  利润_亿美元 = c(834, 760, 165, 946, 113, 237, 225, 126, 394, 351),
  研发投入_亿美元 = c(213, 207, 617, 226, 238, 150, 120, 180, 185, 220),
  员工数量_万 = c(22.1, 18.6, 154, 16.4, 20.7, 11.7, 26.6, 12.7, 8.6, 26.7),
  行业 = c("软件服务", "互联网服务", "电子商务", "消费电子", "通信设备", "互联网服务", "电子商务", "汽车制造", "社交媒体", "电子设备")
)

# 计算利润率和研发强度
company_finance$利润率 = company_finance$利润_亿美元 / company_finance$营收_亿美元 * 100
company_finance$研发强度 = company_finance$研发投入_亿美元 / company_finance$营收_亿美元 * 100

# 展示数据
datatable(company_finance, caption = "全球主要科技企业财务数据")

4.2 图形3——交互式气泡图:科技企业营收、利润与研发投入关系

# 创建交互式气泡图
p <- plot_ly(
  company_finance,
  x = ~营收_亿美元,
  y = ~利润_亿美元,
  size = ~研发投入_亿美元,
  color = ~行业,
  text = ~paste("企业:", 企业名称, "<br>营收:", 营收_亿美元, "亿美元", 
               "<br>利润:", 利润_亿美元, "亿美元", 
               "<br>研发投入:", 研发投入_亿美元, "亿美元"),
  type = 'scatter',
  mode = 'markers',
  sizes = c(10, 100),
  marker = list(opacity = 0.7, sizemode = 'diameter')
) %>%
layout(
  title = "科技企业营收、利润与研发投入关系",
  xaxis = list(title = "营收 (亿美元)"),
  yaxis = list(title = "利润 (亿美元)"),
  legend = list(title = list(text = "行业"))
)

p
  • 图形解读:
  • 规模与效益关系:苹果和微软在营收和利润方面都表现突出,显示出较强的规模效应和盈利能力。
  • 研发投入策略:亚马逊的研发投入远高于其他企业,但其利润相对较低,反映出其长期投资导向的战略。
  • 行业差异:消费电子和软件服务行业的企业利润率普遍较高,而电子商务和汽车制造行业的利润率相对较低。

5 样本相似性可视化

5.1 案例数据解释与展示

  • 本章节使用全球主要科技园区的评估数据,包括创新指数、基础设施、人才吸引力、政策支持等指标,用于分析不同园区之间的相似性。
# 创建示例数据
tech_parks <- data.frame(
  园区名称 = c("硅谷", "中关村", "深圳南山", "新加坡科技局", "伦敦科技城", 
              "柏林数字中心", "班加罗尔", "特拉维夫", "波士顿128公路", "上海张江"),
  创新指数 = c(95, 88, 85, 82, 78, 75, 70, 87, 80, 83),
  基础设施 = c(92, 85, 88, 89, 79, 76, 68, 84, 81, 86),
  人才吸引力 = c(94, 87, 86, 80, 77, 73, 65, 90, 82, 85),
  政策支持 = c(85, 90, 89, 88, 75, 78, 82, 86, 72, 87),
  国际化程度 = c(90, 75, 78, 92, 85, 80, 60, 88, 83, 76),
  融资环境 = c(93, 85, 84, 81, 79, 74, 63, 89, 82, 80)
)

# 展示数据
datatable(tech_parks, caption = "全球主要科技园区评估数据")

5.2 图形4——热力图与聚类分析:科技园区相似性评估

# 提取数值数据用于聚类
park_data <- tech_parks %>%
  select(-园区名称) %>%
  as.matrix()

# 标准化数据
park_data_scaled <- scale(park_data)

# 计算距离矩阵
dist_matrix <- dist(park_data_scaled, method = "euclidean")

# 层次聚类
hc <- hclust(dist_matrix, method = "ward.D2")

# 创建热力图
library(pheatmap)

# 设置颜色
colors <- colorRampPalette(c("#440154FF", "#21908CFF", "#FDE725FF"))(100)

# 绘制热力图
pheatmap(
  park_data_scaled,
  color = colors,
  cluster_rows = hc,
  cluster_cols = TRUE,
  show_rownames = TRUE,
  show_colnames = TRUE,
  main = "全球科技园区相似性热力图",
  fontsize = 8,
  fontsize_row = 8,
  fontsize_col = 8,
  cellwidth = 20,
  cellheight = 20
)

  • 图形解读:
  • 聚类结果分析:热力图右侧的聚类树显示,全球科技园区可以分为三个主要类别:以硅谷为代表的顶尖创新中心,以中关村和深圳南山为代表的亚洲新兴中心,以及以伦敦、柏林为代表的欧洲中心。
  • 指标相关性:创新指数和人才吸引力指标在聚类中起到了关键作用,这两个指标的相关性较高。
  • 区域特色:亚洲园区(如中关村、深圳南山)在政策支持方面得分较高,而欧美园区(如硅谷、波士顿)在国际化程度和融资环境方面表现突出。

6 时间序列可视化

6.1 案例数据解释与展示

  • 本章节使用全球科技行业的投资数据,包括不同领域的投资额、投资数量和平均投资额等指标,用于分析科技行业的投资趋势。
# 创建示例数据
investment_data <- data.frame(
  年份 = rep(2018:2023, each = 5),
  领域 = rep(c("人工智能", "大数据", "云计算", "区块链", "物联网"), 6),
  投资额_亿美元 = c(260, 180, 150, 70, 120,
                  380, 220, 200, 100, 150,
                  520, 280, 250, 150, 180,
                  760, 350, 320, 200, 220,
                  980, 420, 400, 250, 280,
                  1200, 500, 480, 300, 350),
  投资数量 = c(1200, 900, 800, 500, 700,
              1500, 1100, 950, 650, 850,
              1800, 1300, 1100, 800, 1000,
              2200, 1500, 1300, 950, 1200,
              2500, 1700, 1500, 1100, 1400,
              2800, 1900, 1700, 1250, 1600)
)

# 计算平均投资额
investment_data$平均投资额_万美元 = round(investment_data$投资额_亿美元 * 10000 / investment_data$投资数量, 0)

# 展示数据
datatable(investment_data, caption = "全球科技行业投资趋势数据")

6.2 图形5——交互式面积图:科技行业投资趋势分析

# 创建交互式面积图
p <- plot_ly(
  investment_data,
  x = ~年份,
  y = ~投资额_亿美元,
  color = ~领域,
  type = 'scatter',
  mode = 'none',
  stackgroup = 'one',
  hovertemplate = paste(
    '<b>%{color}</b><br>',
    '年份: %{x}<br>',
    '投资额: %{y}亿美元<br>',
    '平均投资额: %{customdata}万美元',
    '<extra></extra>'
  ),
  customdata = ~平均投资额_万美元
) %>%
layout(
  title = "全球科技行业投资趋势分析",
  xaxis = list(title = "年份"),
  yaxis = list(title = "总投资额 (亿美元)"),
  legend = list(title = list(text = "领域")),
  hovermode = "x unified"
)

p
  • 图形解读:
  • 总体投资趋势:2018-2023 年期间,全球科技行业投资额呈现持续增长态势,尤其是人工智能领域的投资增长最为显著。
  • 领域分布变化:早期区块链领域投资占比较高,但近年来人工智能和大数据领域逐渐成为投资热点。
  • 平均投资额分析:人工智能领域的平均投资额最高,反映出该领域单个项目的规模较大,技术门槛较高。