第五章 变量间关系可视化

Author

221527209 王琳慧

1 解释原始数据

1.1 mtcars

  • mtcars 是R自带的数据集,该数据集摘自 1974年《美国汽车趋势》杂志,包括32款汽车(1973~74款)的油耗、汽车设计和性能等共11个指标。根据该数据集绘制本次练习图形。
  • 指标解释:cyl、vs、am、gear和carb作为因子变量,其余可看作数值变量。

    • mpg: 燃油效率(英里/加仑),数值越高越省油。

    • cyl: 发动机气缸数(4/6/8缸),缸数越多通常动力越强。

    • disp: 发动机排量(立方英寸),排量越大动力越强,油耗越高。

    • hp: 发动机马力(马力),数值越高动力越强。

    • drat: 后轴传动比(比值),影响加速和燃油经济性。

    • wt: 车重(千磅),重量轻的车通常更省油。

    • qsec: 1/4英里加速时间(秒),时间越短动力越强。

    • vs: 发动机类型(0=V型,1=直列),V型多见于高性能车。

    • am: 变速器类型(0=自动,1=手动),手动挡通常更省油。

    • gear: 前进挡位数(3/4/5挡),挡位多可能更平顺省油。

    • carb: 化油器数量(1-8个),数量多可能提升动力。

1.2 diamonds

  • diamondsRggplot2包内置的经典数据集,记录了约 54,000 颗钻石的物理属性和价格信息。数据集包含 10 个变量,4个分类变量,6个数值变量。
  • 指标解释:cut、color、clarity为因子变量,其余可看作数值变量。
    • carat: 钻石重量,单位是克拉(1克拉=0.2克),数值越大钻石越大越贵。
    • cut: 切工质量,分为5个等级:Fair(一般)、Good(良好)、Very Good(很好)、Premium(优质)、Ideal(完美),切工越好钻石光泽越强。
    • color: 颜色等级,从D(无色,最佳)到J(浅黄色),颜色越接近无色价值越高。
    • clarity: 净度等级,分为8级:I1(内含物明显)、SI1-SI2(小内含物)、VS1-VS2(极小内含物)、VVS1-VVS2(极微小内含物)、IF(内部无瑕),净度越高钻石越纯净。
    • depth: 总深度百分比(%),计算公式为z/(x+y)/2*100,影响钻石的光反射效果。
    • table: 台面宽度百分比(%),指钻石顶部平面相对于平均宽度的比例,影响钻石的外观比例。
    • x: 钻石长度(毫米),物理尺寸之一。
    • y: 钻石宽度(毫米),物理尺寸之一。
    • z: 钻石高度(毫米),物理尺寸之一。
    • price: 钻石价格(美元),反映其综合价值,受carat、cut、color、clarity等因素影响。

2 两变量散点图

2.1 绘图要求

  • 利用ggplot(data,aes(x,y))+geom_point()绘制燃油效率(mpg,横轴)和车重(wt,纵轴)两个变量的散点图;

  • 利用geom_rug()为横轴和纵轴绘制地毯图;

  • 利用stat_smooth()为散点图添加拟合直线;

  • 利用geom_point()为散点图添加均值点;

  • 利用ggMarginal(type="densigram") 为散点图添加边际核密度直方图;

  • 利用ggtitle() 将图标题改为散点图+地毯图+线性拟合+边际图

2.2 作图代码

2.3 图形观察和代码编写的心得体会

  • 该图形通过多图层叠加的方式,综合展示了变量间的分布与关系:

    1. 散点图geom_point)直观呈现了mpgwt的负相关趋势,填充色与形状增强了数据点的辨识度;

    2. 地毯图geom_rug)在坐标轴边缘补充了单变量分布,避免信息遗漏;

    3. 线性拟合线stat_smooth)与置信带清晰刻画了变量间线性关系的方向与不确定性;

    4. 均值点(黄色标记)直观定位数据中心,便于对比离群点;

    5. 边际密度直方图ggMarginal)进一步通过分布形态揭示变量的偏态或峰态特征。

3 散点图矩阵和相关系数矩阵图

3.1 绘图要求

  • 利用GGally::ggpairs(columns)绘制除cyl、vs、am、gear和carb外6个变量的散点图矩阵;

  • 修改参数upper=list(continuous = "density") ,将上三角图形改为二维核密度等高线图;

  • 利用ggiraphExtra::ggCor() 绘制除cyl、vs、am、gear和carb外6个变量的相关系数矩阵图。

3.2 散点图矩阵

3.3 相关系数矩阵图代码

3.4 图形观察和代码编写的心得体会

  • 散点图矩阵通过多维关系可视化高效展示了变量间的分布与关联模式:

    1. 散点图组合直观呈现两两变量的线性或非线性关系(如mpgwt的负相关趋势);

    2. 二维核密度图upper = list(continuous = "density"))补充了变量联合分布的密度特征,帮助识别数据聚类或异常区域;

    3. 精简变量筛选dplyr::select)去除非关键列,聚焦核心分析目标;

    4. 字体调整theme设置)优化了多变量标签的显示效果,避免重叠。

  • 相关系数矩阵图通过颜色梯度数值标注直观呈现变量间的相关性强弱与显著性:

    1. 颜色映射rvalue从-1.0到1.0)清晰区分正负相关,深色表示强相关性(如mpgwt的-0.8677),浅色表示弱相关(如qsecmpg的0.0912);

    2. 数值标注label=3)同时显示相关系数和检验P值(如-0.8476 (<.001)),便于快速判断统计显著性;

    3. 半角矩阵mode=2)避免重复信息,提升图形简洁性;

    4. 轴标签角度调整xangle=0)保持变量名称水平排列,增强可读性。

4 大数据集的散点图

4.1 绘图要求

  • 利用diamonds数据,绘制carat: 钻石重量price: 钻石价格两个变量的散点图;

  • 利用geom_hex(bins=30,size=0.3,color="black"),将散点图转化为六边形分箱散点图;

  • 利用stat_density_2d(geom="raster",aes(fill=..density..),contour=FALSE) ,将散点图转化为二维核密度图;

  • 利用geom_density_2d() ,在散点图上添加核密度等高线;

  • 利用geom_density_2d_filled(alpha=0.8) ,对核密度等高线区域填充颜色。

4.2 六边形分箱散点图

4.3 二维核密度图

4.4 散点图+密度等高线

4.5 散点图+密度等高线带

4.6 图形观察和代码编写的心得体会

  • 图形观察:
    • 六边形分箱散点图通过颜色深浅直观揭示钻石克拉(carat)与价格(price)的密度分布,高密度区域集中在小克拉低价格区间。
    • 二维核密度图以平滑渐变呈现变量间关联模式,核心区域对应数据分布峰值,边缘密度递减清晰。
    • 叠加密度等高线的散点图结合离散点与连续轮廓线,双重视角凸显数据集中趋势与离散边界。
    • 填充色密度等高线带通过色块层级强化密度差异,黑色轮廓线进一步明确分布形态,视觉层次丰富。
    代码心得:
    • 灵活调用 geom_hexstat_density_2dgeom_density_2d_filled,实现从离散点到密度热图的多维表达,体现图层叠加优势。
    • 使用 viridis 配色兼顾美观与无障碍设计,scale_fill 参数统一颜色映射逻辑,提升图形专业性。
    • 通过 guides(fill="none") 精简图例、theme 调整优化布局,代码简洁性与可读性并重。

5 3D散点图和气泡图

5.1 绘图要求

  • 绘制hp发动机马力、mpg燃油效率和wt车重三个变量的 3D 散点图和气泡图。

  • 采用scatterplot3d(x=hp,y=wt,z=mpg)绘制3D散点图,并添加回归平面。

  • 采用ggplot(df,aes(x=hp,y=mpg,color=wt,size=wt)) 绘制气泡图

5.2 3D散点图代码

5.3 气泡图代码

5.4 图形观察和代码编写的心得体会

  • 该3D散点图通过多维空间映射回归平面叠加,直观展示了hp(马力)、wt(车重)与mpg(油耗)的复杂关系:

    1. 三维坐标系统scatterplot3d)清晰呈现变量间的空间分布,垂直线段(type="h")增强立体感;

    2. 二元线性回归平面plane3d)通过颜色对比(如灰色平面)刻画两变量对mpg的联合影响趋势;

    3. 高亮与颜色映射highlight.3d=TRUE)尝试区分数据点的空间密度,但需验证实际效果。

6 分组散点图

6.1 绘图要求

  • 以气缸数(cy1)为因子,绘制车重(wt)和燃油效率(mpg)的分组散点图,添加回归直线;

  • 利用facet_grid(~cy1,scale="free_x") ,按因子变量分面;

  • 利用ggplot(data=df,aes(x=wt,y=mpg,shape=cyl,color=cyl)) ,按形状和颜色分组

6.2 按因子变量分面代码

  • 注意分组变量cyl需要转化为因子

6.3 按形状和颜色分组代码

6.4 图形观察和代码编写的心得体会

  • 按因子变量分面图形旨在通过分组分面颜色映射探索cyl(气缸数)对wtmpg关系的调节作用:

    1. 颜色区分color=cyl)直观展示不同气缸数下数据点的分布规律;

    2. 线性拟合线stat_smooth)帮助观察各组数据的趋势差异;

    3. 分面功能facet_grid)尝试按cy1分组,实现多维度对比。

  • 用点的形状和颜色分组的图形通过双重分组编码(形状+颜色)强化了分类变量cyl的可视化区分度:

  1. 形状与颜色联动shape=cyl, color=cyl)采用双通道编码,确保不同气缸数组别在黑白或彩色场景下均可辨识;

  2. 手动映射优化scale_shape_manual)选择差异显著的符号(如空心圆、实心圆、三角形),避免形状混淆;

  3. 调色板控制scale_color_brewer)使用高对比度的Set1色系,提升颜色区分度;

  4. 图例布局legend.position="bottom")集中展示分组信息,减少视觉跳跃。