第五章 变量间关系可视化

Author

学号+姓名

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. 变量关系:从图形标题“燃油效率 vs 车重”可以看出,这是一幅展示车重(wt)与燃油效率(mpg)之间关系的散点图。横轴(x轴)应为车重,纵轴(y轴)应为燃油效率。

  2. 趋势分析:通常,车重与燃油效率呈负相关关系,即车重增加时,燃油效率(mpg)会降低。图形中应能看到数据点从左上方向右下方倾斜的趋势。

geom_point() 绘制散点图,设置颜色和透明度
geom_rug(sides="bl") 在底部(b)和左侧(l)添加地毯图,显示数据密度
stat_smooth(method="lm") 添加线性回归拟合线(灰色阴影默认表示置信区间,se=FALSE关闭)
geom_point(均值点) 用红色菱形标注均值点
ggMarginal() 添加边际图,type="densigram"结合核密度和直方图
labs() 设置标题和轴标签

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 可能与 disphpwt 呈负相关(大排量/重车型燃油效率低)。

  • drat(高轴比)可能与 mpg 正相关(经济型车辆设计)。

  • 分布特征

    • disphp 的分布右偏(少数高性能车型拉高范围)。

    • mpgdrat 可能接近正态分布。

  • 异常值

    • 若散点图中存在离群点(如 hp > 300 的车型),可能需要单独分析。

相关系数矩阵图

  1. 相关系数解读

    • 正相关(如r=0.5):变量与mpg同向变化(如hp越高,mpg可能越高,但需结合实际数据)。

    • 负相关(如r=-0.5):变量与mpg反向变化(如wt车重增加,mpg降低)。

    • 无相关r=0):如drat可能与mpg无关。

  2. 关键变量wt(车重)的负相关性可能最强(接近-1.0),符合燃油效率的物理规律。

  3. 代码功能解读:

    1. 数据筛选

      • 使用 dplyr::select()mtcars 数据集中排除了 cyl, vs, am, gear, carb 列,保留剩余变量(如 mpg, disp, hp, drat, wt, qsec)。

      • 目的:聚焦分析核心变量间的相关性,减少干扰。

    2. 可视化

      • 通过 ggiraphExtra::ggCor() 绘制相关系数矩阵图:

        • method = "pearson":计算皮尔逊相关系数(线性相关)。

        • type = "circle":用圆圈面积表示相关系数绝对值大小,颜色表示正负(红负蓝正)。

        • colours:自定义颜色渐变(红→白→蓝)。

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

六边形分箱散点图

  1. 避免散点图的重叠问题,清晰展示高密度区域。

  2. 颜色深浅直观反映数据点密度(深色 = 更多钻石)。

  3. 大数据量时更有效。

  4. bins = 30:控制六边形的数量(越大,六边形越小,细节越多)。

  5. color = "black":六边形边框颜色。

  6. scale_fill_viridis_c():使用 viridis 色阶(避免误导性颜色)。

二维核密度图

  1. 图形类型

    • 从内容推测,这是一幅 二维核密度图(2D Kernel Density Plot),用于展示两个连续变量(如价格 (USD)面积 (m/s))的联合分布。

    • 横轴可能为面积 (m/s),纵轴为价格 (USD),颜色深浅表示数据点的密度(高密度区域颜色更深)。

  2. 数据分布特征

    • 价格范围:集中在 $5,000-$15,000,少数高价异常值(如 $15,000)。

    • 面积范围:主要分布在 1-5 m/s,密度峰值出现在 2-3 m/s 附近。

    • 相关性:图形可能显示价格与面积呈正相关(面积越大,价格越高),但需验证是否存在非线性模式。

    • 核密度图的优势

      • 直观揭示数据的聚集区域和分布形态,优于散点图(尤其大数据量时)。避免因过度绘制(overplotting)导致的信息丢失
  3. 数据分布

    • 大多数钻石的重量集中在0到1克拉之间,这在图中表现为颜色较亮的区域。

    • 价格主要集中在0到5000美元之间,这也是颜色较亮的区域。

    • 密度分布

      • 在重量约为0.5克拉和价格约为2500美元的区域,密度最高,这表明这个重量和价格区间的钻石最为常见。

      • 随着重量和价格的增加,密度迅速下降,表明较重和较贵的钻石较为稀少。

    • 市场趋势

      • 从图中可以看出,市场上大多数钻石的价格在5000美元以下,重量在1克拉以下。

      • 价格和重量的分布显示出市场的多样性,既有低价小钻石,也有高价大钻石,但后者较为稀少。

散点图+密度等高线

  1. 数据分布

    • 大多数钻石的重量集中在0到2克拉之间。

    • 价格分布非常广泛,从几百美元到超过15000美元不等。

  2. 价格与重量的关系

    • 随着钻石重量的增加,价格总体上也呈上升趋势,但并不是线性关系。

    • 在重量较轻的区域(0到1克拉),价格的波动较大,显示出不同价格的钻石在这个重量区间内都有分布。

  3. 核密度等高线

    • 红色等高线表示数据点的密度。等高线越密集,表示该区域的数据点越多。

    • 在重量约为0.5克拉和1克拉附近,可以看到明显的密度峰值,表明这些重量的钻石较为常见。

    • 在价格较低的区域(0到5000美元),等高线也显示出较高的密度,说明低价钻石较为常见。

  4. 异常值和离群点

    • 在重量超过2克拉的区域,数据点变得稀疏,这可能是因为大重量钻石较为稀有。

    • 在价格超过10000美元的区域,数据点也较为稀疏,这可能表明高价钻石较少。

  5. 市场趋势

    • 从图中可以看出,市场上大多数钻石的价格在5000美元以下,重量在2克拉以下。

    • 价格和重量的分布显示出市场的多样性,既有低价小钻石,也有高价大钻石。

带颜色的散点图加密度等高线

  1. 颜色表示密度

    • 图中使用不同的颜色来表示数据点的密度,颜色越亮表示该区域的数据点密度越高。

    • 颜色条显示了密度的范围,从深紫色(低密度)到黄色(高密度)。

  2. 数据分布

    • 大多数钻石的重量集中在0到1克拉之间,这在图中表现为颜色较亮的区域。

    • 价格主要集中在0到5000美元之间,这也是颜色较亮的区域。

  3. 密度分布

    • 在重量约为0.5克拉和价格约为2500美元的区域,密度最高,这表明这个重量和价格区间的钻石最为常见。

    • 随着重量和价格的增加,密度迅速下降,表明较重和较贵的钻石较为稀少。

  4. 异常值和离群点

    • 图中没有显示出明显的异常值或离群点,这可能是因为颜色填充的方式使得这些点不太明显。
  5. 市场趋势

    • 从图中可以看出,市场上大多数钻石的价格在5000美元以下,重量在1克拉以下。

    • 价格和重量的分布显示出市场的多样性,既有低价小钻石,也有高价大钻石,但后者较为稀少。

总结来说,这张图提供了钻石重量和价格之间关系的直观展示,通过观察可以发现市场上大多数钻石的重量和价格分布情况,以及一些可能的市场趋势。这种可视化方法有助于理解数据的分布特征和密度变化。

散点图+密度等高线带

  1. 散点图

    • 散点图中的每个点代表一个钻石样本,横坐标是钻石的重量(carat),纵坐标是钻石的价格(USD)。

    • 数据点在图中分布较为密集,尤其是在重量较轻(0到1克拉)和价格较低(0到5000美元)的区域。

  2. 核密度估计等高线

    • 等高线图显示了数据点的密度分布,颜色越亮表示该区域的数据点密度越高。

    • 颜色条显示了密度的范围,从深紫色(低密度)到黄色(高密度)。

    • 在重量约为0.5克拉和价格约为2500美元的区域,密度最高,这表明这个重量和价格区间的钻石最为常见。

  3. 数据分布

    • 大多数钻石的重量集中在0到1克拉之间,价格主要集中在0到5000美元之间。

    • 随着重量和价格的增加,数据点逐渐减少,表明较重和较贵的钻石较为稀少。

  4. 市场趋势

    • 从图中可以看出,市场上大多数钻石的价格在5000美元以下,重量在1克拉以下。

    • 价格和重量的分布显示出市场的多样性,既有低价小钻石,也有高价大钻石,但后者较为稀少。

  5. 异常值和离群点

    • 在重量超过2克拉的区域,数据点变得稀疏,这可能是因为大重量钻石较为稀有。

    • 在价格超过10000美元的区域,数据点也较为稀疏,这可能表明高价钻石较少。

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散点图代码

function (x, ...) 
UseMethod("print")
<bytecode: 0x000002199c86a8d8>
<environment: namespace:base>

5.3 气泡图代码

function (x, ...) 
UseMethod("print")
<bytecode: 0x000002199c86a8d8>
<environment: namespace:base>

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

3D散点图

  • 坐标轴

    • X轴代表马力(hp),范围从50到350。

    • Y轴代表车重(wt),范围从1到6吨。

    • Z轴代表燃油效率(mpg),范围从10到35。

  • 数据分布

    • 大多数数据点集中在马力100到250之间,车重2到3.5吨之间,燃油效率20到30 mpg之间。

    • 随着马力的增加,燃油效率有下降的趋势,这可能表明更强大的引擎通常伴随着较低的燃油效率。

    • 车重与燃油效率之间的关系不太明显,但可以观察到较重的车辆(接近6吨)燃油效率普遍较低。

  • 趋势线

    • 图中有一条红色的虚线,可能表示某种趋势或回归线,显示了马力和燃油效率之间的负相关关系。
  • 异常值

    • 在高马力(超过300 hp)和高燃油效率(超过30 mpg)的区域,数据点较少,可能存在一些异常值或高性能车辆。
  • 总体观察

    • 整体来看,图中显示了汽车性能(马力)和经济性(燃油效率)之间的权衡关系。通常,马力越大,燃油效率越低。

气泡图

  1. 坐标轴

    • X轴代表马力(hp),范围从0到300。

    • Y轴代表燃油效率(mpg),范围从10到35。

  2. 气泡大小和颜色

    • 气泡的大小代表车重,图例中显示了车重的范围从2到5。

    • 气泡的颜色也代表车重,颜色从蓝色(较轻的车重)到红色(较重的车重)变化。

  3. 数据分布

    • 大多数数据点集中在马力100到200之间,燃油效率15到25 mpg之间。

    • 随着马力的增加,燃油效率有下降的趋势,这表明更强大的引擎通常伴随着较低的燃油效率。

    • 车重较大的汽车(颜色较红)通常出现在马力较高和燃油效率较低的区域。

  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需要转化为因子

function (x, ...) 
UseMethod("print")
<bytecode: 0x000002199c86a8d8>
<environment: namespace:base>

6.3 按形状和颜色分组代码

function (x, ...) 
UseMethod("print")
<bytecode: 0x000002199c86a8d8>
<environment: namespace:base>

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

按因子变量分面

  1. 坐标轴

    • X轴代表车重(wt),单位未明确指出,但通常车重以吨(t)或千克(kg)为单位。

    • Y轴代表燃油效率(mpg),即每加仑英里数,是衡量汽车燃油经济性的指标。

  2. 数据分组

    • 图中数据按气缸数分为三组,分别用不同颜色和形状的点表示:

      • 红色圆点代表4气缸的汽车。

      • 绿色圆点代表6气缸的汽车。

      • 蓝色圆点代表8气缸的汽车。

  3. 趋势线

    • 每组数据都有一条趋势线,显示了车重与燃油效率之间的线性关系:

      • 4气缸汽车的趋势线斜率较大,表明车重增加时燃油效率下降较快。

      • 6气缸和8气缸汽车的趋势线斜率较小,表明车重增加时燃油效率下降较慢。

  4. 数据分布

    • 4气缸汽车的燃油效率普遍较高,且随着车重的增加,燃油效率下降。

    • 6气缸汽车的燃油效率次之,同样随着车重增加而下降,但下降幅度较小。

    • 8气缸汽车的燃油效率最低,且随着车重增加,燃油效率也下降,但下降幅度最小。

  5. 总体观察

    • 总体来看,气缸数越多,汽车的燃油效率越低,且车重对燃油效率的影响越小。

    • 这可能是因为多气缸发动机通常用于更重、更强大的汽车,这些汽车的设计和用途可能不以燃油经济性为主要目标。

总结来说,这张图展示了气缸数、车重和燃油效率之间的复杂关系,揭示了不同类型汽车在燃油经济性方面的差异。

按气缸数分面

  1. 坐标轴

    • X轴代表车重(wt),单位可能是吨(t)。

    • Y轴代表燃油效率(mpg),即每加仑英里数,是衡量汽车燃油经济性的指标。

  2. 数据分布

    • 每个分面中,数据点沿着一条趋势线分布,显示出车重与燃油效率之间的负相关关系,即随着车重的增加,燃油效率降低。
  3. 趋势线

    • 每个分面中的趋势线显示了车重与燃油效率之间的线性关系:

      • 4气缸汽车(红色):随着车重增加,燃油效率显著下降。

      • 6气缸汽车(绿色):同样显示出车重增加时燃油效率下降,但下降幅度较4气缸汽车小。

      • 8气缸汽车(蓝色):车重增加时燃油效率也下降,但下降幅度最小。

  4. 数据点分布

    • 4气缸汽车的车重范围大约在1.5到3.0之间,燃油效率在20到35 mpg之间。

    • 6气缸汽车的车重范围大约在2.75到3.5之间,燃油效率在15到25 mpg之间。

    • 8气缸汽车的车重范围大约在3.5到5.5之间,燃油效率在10到20 mpg之间。

  5. 总体观察

    • 气缸数越多,汽车的燃油效率越低,且车重对燃油效率的影响越小。

    • 这可能是因为多气缸发动机通常用于更重、更强大的汽车,这些汽车的设计和用途可能不以燃油经济性为主要目标。

按形状和颜色分组

  1. 坐标轴

    • X轴代表车重(wt),单位未明确指出,但通常车重以吨(t)或千克(kg)为单位。

    • Y轴代表燃油效率(mpg),即每加仑英里数,是衡量汽车燃油经济性的指标。

  2. 数据分组

    • 图中数据按气缸数分为三组,分别用不同颜色和形状的点表示:

      • 红色圆点代表4气缸的汽车。

      • 蓝色三角形代表6气缸的汽车。

      • 绿色菱形代表8气缸的汽车。

  3. 数据分布

    • 4气缸汽车(红色圆点)的燃油效率普遍较高,且随着车重的增加,燃油效率有所下降。

    • 6气缸汽车(蓝色三角形)的燃油效率次之,同样随着车重增加而下降,但下降幅度较小。

    • 8气缸汽车(绿色菱形)的燃油效率最低,且随着车重增加,燃油效率也下降,但下降幅度最小。

  4. 总体观察

    • 总体来看,气缸数越多,汽车的燃油效率越低,且车重对燃油效率的影响越小。

    • 这可能是因为多气缸发动机通常用于更重、更强大的汽车,这些汽车的设计和用途可能不以燃油经济性为主要目标。

(分面散点图)使用了分面(facet)的方式来展示数据,每个气缸数的数据被分配到不同的面板中。每个面板中都有一条趋势线,显示了车重与燃油效率之间的线性关系。分面图清晰地将不同气缸数的数据分开,每个面板中的趋势线有助于直观地理解车重与燃油效率之间的关系。

(使用不同的颜色和形状)来区分不同的气缸数。没有使用分面,所有数据点都在同一个图中展示。使用颜色和形状来区分气缸数,使得数据点的分组信息一目了然。在某些交互式可视化工具中,这种图可以更容易地进行交互