第五章 变量间关系可视化

Author

221527116 古林琳

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

  • 多元素整合:该图巧妙整合了多种可视化元素,既展示了变量间关系,又呈现了各自的分布特征。

  • 视觉层次:通过颜色和大小区分不同元素(蓝色散点、红色拟合线、黄色均值点),使图形信息丰富但不混乱。

  • 边际图价值:边缘的密度直方图能直观展示单变量分布,帮助识别偏态或异常值。

  • 统计量展示:均值点的添加提供了数据中心的直观参考。

  • 图层叠加:ggplot2的图层思想体现得很好,通过+逐步添加不同图形元素。

  • 美学控制

    • 使用shape=21实现可填充的圆形点

    • 精心选择的颜色(“deepskyblue”, “steelblue”)使图形专业美观

    • alpha参数控制边际图的透明度

  • 统计函数整合stat_smooth()方便地添加了统计模型结果。

  • 扩展包使用ggMarginal()来自ggExtra包,轻松实现边际图添加。

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

  • 散点图矩阵:

全面性:一次性展示所有数值变量间关系,效率极高。

对角线设计:默认显示变量分布直方图或密度曲线。

模式识别:容易发现线性/非线性关系和异常值。

比较优势:不同变量组合的关系一目了然。

  • 相关系数矩阵:

量化展示:精确显示相关系数值和显著性。

视觉编码:颜色深浅直观反映相关性强弱。

紧凑性:半角矩阵节省空间,避免冗余信息。

统计严谨:包含P值信息,区分统计显著性和实际显著性。

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

5.4.1 3D散点图立体优势

  1. 立体优势:直观展示三维关系,特别适合工程和科学数据

  2. 回归平面价值:清晰显示两个预测变量对响应变量的联合影响

  3. 深度感知:垂直线和颜色渐变有效解决3D图形的深度模糊问题

  4. 交互局限:静态图像难以全面展示三维结构,需配合旋转查看

5.4.2 气泡图:

  1. 高维编码:成功展示四维数据而不显拥挤

  2. 视觉层次:大小和颜色双重编码强化了车重变量的表达

  3. 平衡艺术:透明度、大小范围和颜色梯度的平衡使图形美观实用

  4. 自解释性:内置标注减少额外说明需求

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

6.4.1 分面散点图优势

  1. 组间比较:并排展示使差异对比一目了然

  2. 模式识别:可同时观察组内关系和组间差异

  3. 节省空间:共享y轴避免重复标签

  4. 统计增强:每个子图独立拟合反映组内关系

6.4.2 形状颜色分组价值

  1. 双通道编码:冗余编码增强变量识别可靠性

  2. 单图优势:保持数据整体感,适合较少分组

  3. 视觉区分:精心选择的形状和颜色组合避免混淆

  4. 美学控制:专业配色方案提升图形质量