第五章 变量间关系可视化

Author

221527101关子桃

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 图形观察和代码编写的心得体会

图形观察

数据分布:散点图展示了两个变量之间的关系,地毯图(rug plot)在坐标轴边缘显示了变量的边缘分布。

线性趋势:拟合的直线显示了两个变量之间的大致线性关系,可以直观判断相关性强度和方向。

数据密度:通过地毯图可以观察到数据在坐标轴上的集中区域,了解变量的分布情况。

代码编写心得

可视化选择:组合多种图形元素(散点图+地毯图+拟合线)可以更全面地展示数据特征。

参数调整:透明度(alpha)的设置对于避免图形元素重叠很重要。

解释性:这种组合图形既能展示总体趋势,又能显示数据分布,便于全面理解数据。

交互性:在实际分析中,可以考虑添加交互元素(如悬停显示数据点信息)增强探索性。散点图矩阵和相关系数矩阵图

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 图形观察和代码编写的心得体会

图像观察

散点图

数据结构:展示了mpg(燃油效率)与其他变量(disp、hp、drat、wt、qsec)的相关系数矩阵

显著性标记:星号()表示显著性水平(p<0.05, **p<0.01, ***p<0.001);如mpg与disp的相关系数为-0.848***,表示极强负相关且高度显著

相关模式:mpg与disp、hp、wt呈强负相关;mpg与drat呈较强正相关;mpg与qsec相关性较弱

矩阵图

可视化形式:采用热力图形式展示相关系数矩阵

增强信息:包含相关系数值和p值(如-0.8476 (<.001));颜色梯度表示相关性强弱和方向(红色可能为负,蓝色为正);对角线通常为1(变量与自身的完全相关)

心得体会

强相关(>0.7或<-0.7)表示变量间可能有重要关系;注意区分统计显著性和实际意义(大样本时弱相关也可能显著);警惕伪相关,相关≠因果;热力图是展示相关系数矩阵的最有效方式之一;颜色梯度应直观反映正负和强度;添加数值标签和显著性标记增强信息量。

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 图形观察和代码编写的心得体会

图形观察

六边形分箱散点图:清晰展示了数据点的密集区域;通过颜色深浅和六边形大小直观反映数据分布;适合大数据集,避免重叠问题

二维核密度图:使用平滑的密度曲面表示数据分布;等高线形式展示密度变化;适合观察数据的概率密度分布

散点图+密度等高线:结合原始数据点和密度信息;既能看具体数据分布,又能把握整体趋势;适合中等规模数据集

散点图+密度等高线带:类似第三种但等高线更宽;强调密度区域而非精确边界;视觉效果更柔和

心得体会

选择合适的可视化类型:大数据集优先考虑六边形分箱或密度图;中小数据集可使用散点图加辅助信息

数调整很重要:分箱大小、带宽选择影响可视化效果;需要多次尝试找到最佳参数

图层叠加技巧:学会将不同类型图表叠加(如散点+等高线);注意调整透明度避免信息遮盖

可视化目标导向:探索分布用密度图;展示关系用散点图;大数据概览用分箱图

美学考虑:颜色渐变选择要合理;图例和标签要清晰;避免过度装饰干扰数据表达

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(马力)与mpg(燃油效率)的二维关系;通过回归曲面揭示了变量间的非线性关系;曲面颜色渐变表示预测值的变化;原始数据点仍保留在曲面下方作为参考

数据洞察:明显呈现非线性关系:中等马力时燃油效率最高;极高或极低马力都对应较低燃油效率;曲面平滑度反映模型复杂度

气泡图

图形特征:双变量(hp与mpg)基础散点图;通过气泡大小引入第三维度(wt车重);颜色可能代表额外维度(图中未明确显示)

数据洞察:清晰展示马力与燃油效率的负相关关系;气泡大小揭示:车重越大通常燃油效率越低;存在一些异常点(如小气泡在高mpg区域)

心得体会

回归曲面实现技巧:需要先拟合回归模型(如loess、多项式回归);网格点预测后使用曲面绘制函数;调整透明度使底层数据点可见

气泡图实现要点:将第三变量映射到点的大小参数;注意比例尺设置避免气泡过大/过小;添加图例说明气泡大小含义

多维度展示技巧:优先确定核心关系作为x/y轴;次要维度使用视觉通道(大小/颜色/形状);避免同时使用太多视觉通道造成混乱

交互式可视化潜力:这类复杂关系图特别适合转为交互式;可添加悬浮提示框显示所有维度数据;允许缩放/旋转(特别是3D曲面)

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 图形观察和代码编写的心得体会

图形观察

按因子变量

图形特征:展示了wt(车重)与mpg(燃油效率)的关系;按cyl(气缸数)分组显示,cyl已正确转化为因子;每组呈现五数概括(最小值、Q1、中位数、Q3、最大值);能清晰比较不同组别的分布差异

数据洞察:气缸数越多(4/6/8),车重普遍越大;燃油效率与气缸数呈明显负相关;8缸车型的mpg分布范围最集中;4缸车型存在高mpg异常值

按颜色和形状

图形特征:双变量散点图基础上增加了两个分组维度;用不同颜色区分主要分组(Bdun);用不同形状区分次要分组(Cyl);图例清晰标注了各类别的对应关系

数据洞察:可以同时观察四个维度的关系;颜色和形状的组合能有效区分复杂分组;发现某些特定组合(Bdun+Cyl)有聚集特征;可能存在交互效应值得进一步分析

心得体会

视觉通道选择原则:主要分组维度使用颜色(人眼最敏感);次要分组维度使用形状/填充样式;避免同时使用>2种分组视觉通道;确保不同形状在黑白打印时仍可区分

分组图优化技巧:调整点的大小/透明度避免重叠;使用position_dodge处理并列箱线图;添加均值标记辅助比较: