数据可视化期末报告

Author

221527114柯金余

1 报告要求

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

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

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

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

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

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

  • 评分标准:

    • 每章节图形各20分

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

    • 数据独特性强10%

    • 图形个性化强15%

      library(dplyr)  # 确保 dplyr 已加载
      library(ggplot2)  # 必须加载才能使用 ggplot()
      library(gridExtra)
      library(tidyr) 
      library(ggradar)
      library(stringr)  # 加载包
      library(forcats) 
      library(readxl)
      library(DT)

2 类别数据可视化

2.1 案例数据解释与展示

  • 以下数据为对养生食品购买需求的相关数据
#数据
data = read_xlsx("E:\\数据可视化\\期末报告\\期末数据\\养生食品 第一个图数据.xlsx")
DT::datatable(data,rownames = FALSE)
df1<-data |> 
  select(性别,购买养生食品的频率) |> 
  summarise(人数=n(),.by=c(性别,购买养生食品的频率))             # 生成列联表并转化成数据框
df2<-data |> 
  select(月收入,购买养生食品的频率) |> 
  summarise(人数=n(),.by=c(月收入,购买养生食品的频率))

datatable(df1,rownames = FALSE);datatable(df2,rownames = FALSE)

2.2 图形1——多变量条形图

# 图(a)垂直并列条形图
p1<-ggplot(df1,aes(x=购买养生食品的频率,y=人数,fill=性别))+
  geom_col(width=0.8,    # 设置条形宽度
  position="dodge",      # 绘制并列条形图
  color="gray50")+       # 设置条形图的边框颜色
  scale_fill_brewer(palette="Set2")+  # 设置填充颜色
  geom_text(aes(label=人数),position=position_dodge(0.9),vjust=-0.5,size=3)+          # 设置标签垂直位置和字体大小
  ylim(0,1.1*max(df1$人数))+      # 设置y轴范围
  ggtitle("(a) 垂直并列条形图")

# 图(b) 水平并列条形图
p2<-ggplot(df1,aes(x=购买养生食品的频率,y=人数,fill=性别))+
  geom_col(width=0.8,position="dodge",color="gray50")+
  geom_text(aes(label=人数),position=position_dodge(0.9),size=3,hjust=1.5)+
  coord_flip()+                    # 坐标轴互换
  scale_fill_brewer(palette="Set2")+
  #ylim(0,1.1*max(df1$人数))+      # 设置y轴范围
  ggtitle("(b) 水平并列条形图")

# 图(c) 垂直堆叠条形图
p3<-ggplot(df2,aes(x=购买养生食品的频率,y=人数,fill=月收入))+
  geom_col(width=0.7,color="gray50")+ # 绘制堆叠条形图(默认)
  geom_text(aes(label=人数),position=position_stack(0.5),size=3)+
  scale_fill_brewer(palette="Set2")+
  ggtitle("(c) 垂直堆叠条形图")

# 图(d) 水平堆叠条形图
p4<-p3+coord_flip()+ggtitle("(d) 水平堆叠条形图")

grid.arrange(p1,p2,p3,p4,ncol=2)           # 按2列组合图形

  • 图形解读:从图形来看,女性购买养生食品的人数多于男性;在频率上,更倾向于半年一次或更少、一季度多次;对应的收入来看,收入为3000-1000的人群更愿意购买养生食品。

3 数据分布可视化

3.1 案例数据解释与展示

  • 该数据为居民消费水平数据(单位:千万)。
data2 = read_xlsx("E:\\数据可视化\\期末报告\\期末数据\\居民消费水平数据.xlsx")
DT::datatable(data2,rownames = FALSE)
data2$全国居民消费水平<- as.numeric(as.character(data2$全国居民消费水平))
data2$城镇居民消费水平<- as.numeric(as.character(data2$城镇居民消费水平))
df <- data2 |>  select(全国居民消费水平,城镇居民消费水平) |> 
  gather(全国居民消费水平,城镇居民消费水平,key=指标,value=指标值)   # 融合数据

DT::datatable(df,rownames = FALSE)

3.2 图形2——叠加直方图和镜像直方图

# 图(a)叠加直方图
p1<-ggplot(df)+aes(x=指标值,y=..density..,fill=指标)+
  geom_histogram(position="identity",color="gray60",alpha=0.5)+
  theme(legend.position=c(0.8,0.8),# 设置图例位置
       legend.background=element_rect(fill="grey90",color="grey"))+
                                                # 设置图例背景色和边框颜色
  ggtitle("(a) 全国居民消费水平,城镇居民消费水平的叠加直方图")

# 图(b)镜像直方图
p2<-ggplot(data2)+aes(x=x)+
   geom_histogram(aes(x=全国居民消费水平,y=..density..),color="grey50",fill="red",alpha=0.3)+ # 绘制全国居民消费水平的直方图(上图)
   geom_label(aes(x=160,y=0.0065),label="全国居民消费水平",color="red")+  # 添加标签
   geom_histogram(aes(x=城镇居民消费水平,y=-..density..),color="grey50",fill="blue",alpha=0.3)+ # 绘制城镇居民消费水平的直方图(下图)
   geom_label(aes(x=120,y=-0.0075),label="城镇居民消费水平",color="blue")+  # 添加标签
   xlab("指标值")+ggtitle("(b) 全国居民消费水平,城镇居民消费水平的镜像直方图")

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

  • 图形解读:图一:在指标值为1时,全国居民消费水平较为集中;在指标3、4时,城镇居民消费水平较为集中,说明城镇居民更偏向于在此处消费。图二:全国居民消费水平与城镇居民消费水平密度水平总体一致,但在某些部分城镇居民消费水平密度更为突出。

4 变量关系可视化

4.1 案例数据解释与展示

  • 该数据与上面数据一样,但在此处对所要研究的全国居民消费水平、城镇居民消费水平两个变量做了转变为数值型数据的处理。
data2 = read_xlsx("E:\\数据可视化\\期末报告\\期末数据\\居民消费水平数据.xlsx")
DT::datatable(data2,rownames = FALSE)
data2$全国居民消费水平<- (as.character(data2$全国居民消费水平))
data2$城镇居民消费水平<- as.numeric(as.character(data2$城镇居民消费水平))

4.2 图形3——散点图和置信带

df<-data2

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) 散点图+地毯图+线性拟合")
p2<-ggplot(data=df,aes(x=农村居民消费水平,y=城镇居民消费水平))+
    geom_point(shape=21,size=1.5,fill="deepskyblue")+
    geom_rug(position="jitter",size=0.5,color="deepskyblue")+  # 添加地毯图
    stat_smooth(method=loess,color="red",fill="deepskyblue",size=0.8)+
                                                # 添加局部加权回归拟合线
    geom_point(aes(x=mean(农村居民消费水平),y=mean(城镇居民消费水平)),shape=21,fill="yellow",size=4)+
    ggtitle("(b) 散点图+地毯图+loess拟合")

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

  • 图形解读:图(a):1.变量关系呈现全国居民消费水平和城镇居民消费水平的关联,线性拟合线表明二者大致呈强线性正相关,即全国居民消费水平提升,城镇居民消费水平往往随之上升。 2.数据分布:散点分布围绕拟合线,多数点贴近直线,说明线性模型对数据拟合度较好;黄色点为异常值或重点关注数据
  • 图(a):1.变量关系:展示农村居民消费水平和城镇居民消费水平的关系,loess 拟合线是曲线,说明二者并非严格线性,而是非线性正相关,农村居民消费水平增长到一定程度后,城镇居民消费水平增长趋势有变化(如增速变缓 / 加快 )。 2.数据分布:散点随拟合线波动,黄色点同样可能是异常值;相比线性拟合,loess 更贴合数据局部特征,能反映农村与城镇居民消费水平关系的非线性细节

5 样本相似性可视化

5.1 案例数据解释与展示

  • 该数据为北京市、天津市、广东省、新疆四个地区的科技创新相关数据。“R&D” 通常是 “Research and Development” 的缩写,即研究与开发(研发),是企业、机构等为创新技术、产品或服务,开展的创造性研究与试验发展活动,涵盖基础研究、应用研究、试验开发等阶段,在科技、工业等领域推动技术进步与新产品诞生
data4 = read_xlsx("E:\\数据可视化\\期末报告\\期末数据\\部分地区科技数据.xlsx")
DT::datatable(data4,rownames = FALSE)
df <- data4 |> gather("R&D人员":"规模以上高技术产业企业数",key=科技项目,value=数量) |> 
  mutate(科技项目=fct_inorder(科技项目))
datatable(df,rownames = FALSE)

5.2 图形4——平行坐标图

# 绘制平行坐标图
ggplot(df,aes(x=科技项目,y=数量,group=地区,color=地区))+
  geom_line(linewidth=0.5)+   # 绘制折线
  geom_point(shape=21,size=1.5,fill="gray50")+          # 绘制点
  theme(legend.position=c(0.75,0.66),
        legend.text=element_text(size=7,color="blue4"),
        legend.direction="horizontal",                # 设置图例位置和摆放方向
        legend.background=element_rect(fill="grey90",color="grey"))+
  guides(color=guide_legend(nrow=8,title=NULL))+     # 设置图例摆放方式(8行,去掉图例标题)
  scale_x_discrete(labels=function(x) str_wrap(x,width=8)) # 设置x轴标签宽度

  • 图形解读:

    1. 地区差异

    广东省:在 “高等学校数”“规模以上高技术产业企业数” 指标中数值突出(尤其是高等学校数,远高于其他地区 ),显示广东在高校资源、高技术企业布局上优势明显,科研与产业转化的基础支撑较强。

    北京市:“规模以上高技术产业企业数” 有一定表现,“R&D 人员”也有基础,体现北京科研人才储备与高技术产业的关联,但 “高等学校数” 等指标未显特别优势,或因统计口径 / 产业结构差异。

    天津市、新疆维吾尔自治区:各指标数值整体偏低,反映在 R&D人力、经费投入强度、高校及高技术企业数量上,与广东、北京存在差距,科技资源与产业发展的活跃度相对弱。

  1. 指标关联

    R&D 人员与企业数:北京、广东的 “R&D 人员” 有基础,后续 “规模以上高技术产业企业数” 也有体现,暗示科研人才储备对高技术企业发展有支撑;天津、新疆 R&D 人员少,企业数也少,或反映人才与产业协同不足。

    高等学校数的影响:广东 “高等学校数” 极高,后续 “规模以上高技术产业企业数” 表现好,可能说明高校资源(科研成果、人才输出 )对高技术产业有显著推动;其他地区高校数少,产业企业数也受限制。

  2. 整体趋势

    各地区 “R&D 经费投入强度” 数值极低(近乎 0 ),可能是统计特殊(如指标单位、数据范围 )或反映经费投入强度并非此维度核心关注;整体来看,广东在科技项目多维度呈现领先,区域科技发展不均衡特征显著,资源集中在少数地区,其他地区需强化人才、高校、产业协同布局 。

  3. 总的来说,这张图展现了广东等地区在科技资源(人才、高校、企业)上的优势,也暴露了区域科技发展的不均衡,能为政策倾斜、资源调配(如补短板、强协同 )提供数据视角参考。

6 时间序列可视化

6.1 案例数据解释与展示

  • 该数据为广东省卫生健康相关数据。为了避免不同变量的数据相差太大的问题,对部分变量的单位进行了调整;并对时间数据进行了数据类型转换。
data5 = read_xlsx("E:\\数据可视化\\期末报告\\期末数据\\广东省卫生健康数据.xlsx")
DT::datatable(data5,rownames = FALSE)
data5$year <- as.Date(data5$year, format = "%Y")

6.2 图形5——折线图

# 选择绘图变量并融合为长格式
df1<-data5 |> select(year,医疗卫生机构数,卫生人员数) |> 
  gather(医疗卫生机构数,卫生人员数,key="指标",value="指标值")  
df2<-data5 |> select(year,医疗卫生机构数:城镇居民人均医疗保健支出) |> 
  gather(2:4,key="指标",value="指标值") |> 
  mutate(指标=fct_inorder(指标))

# 设置绘图主题
mytheme<-theme(legend.position=c(0.2,0.8),              # 将图例放在图内
         legend.background=element_blank())             # 移除图例整体边框

p1<-ggplot(df1,aes(x=year,y=指标值,color=指标))+ # 设置x轴、y轴和线的颜色
  geom_line(size=0.8)+
  geom_point(aes(shape=指标),size=2)+     # 数值点的形状和大小
  mytheme+ggtitle("(a)医疗卫生机构数与卫生人员数折线图 ")

p2<-p1 %+% df2+ggtitle("(b) 卫生健康指标折线图")

gridExtra::grid.arrange(p1,p2,ncol=2)

  • 图形解读:

  • 图 (a):

    卫生人员数:呈现持续快速增长趋势,2010 - 2020 年从约 60 万逐步攀升至 100 万左右,反映卫生人力队伍不断壮大,医疗服务人力供给持续加强。

    医疗卫生机构数:数值低且增长极其缓慢,几乎维持在同一水平,说明这段时期内医疗卫生机构的数量扩张有限,可能受布局规划、资源约束等影响,机构总量未明显增加。

  • 图 (b):

    医疗卫生机构数:和图 (a) 对应指标一致,平稳小幅上升,验证机构数量缓慢增长的趋势,体现医疗服务载体规模的稳定扩充节奏。

    卫生总费用:持续上升,从 2010 年较低水平逐步增长,反映全社会在医疗卫生领域的资金投入不断增加,对医疗服务、保障的资源支持力度加大。

    城镇居民人均医疗保健支出:基本保持平稳,虽有微弱波动但整体变化小,说明城镇居民在医疗保健方面的人均消费支出相对稳定,或受医保保障、消费习惯等因素影响。

  • 综合来看 ,卫生人力(卫生人员数)增长显著,机构数增长滞后,可能存在 “人增机构少” 的结构差异,后续需关注机构资源配置与人力适配。 卫生总费用提升,体现对医疗重视与投入加大,但城镇居民人均医疗支出平稳,需看投入产出效率、保障覆盖效果,也反映医疗投入既有宏观层面的社会支持,也有微观层面居民消费的稳定特征 。