第五章 变量间关系可视化
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
diamonds是R中ggplot2包内置的经典数据集,记录了约 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的模块化设计使得复杂图表也能通过简单代码实现,关键在于:明确目标:每个几何对象(如
geom_*)应对应一个分析需求。逐步调试:按顺序添加图层,及时检查每步效果。
细节打磨:调整颜色、透明度、标题等提升可读性。
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 图形观察和代码编写的心得体会
散点图矩阵适合初步探索变量间的非线性关系和异常值,而相关系数矩阵提供简洁的量化指标。
在
ggpairs()中添加分组颜色(mapping=aes(color=factor(am)))可观察分类变量的影响。本次实践让我更熟悉了
GGally和ggiraphExtra在多维数据可视化中的强大功能,尤其学会了通过分层参数灵活控制图表类型。未来可进一步探索交互式矩阵图(如plotly),提升动态分析能力。业务意义
汽车设计:减轻车重(
wt)和减小排量(disp)可显著提升燃油效率(mpg)。消费者选择:追求燃油经济性时,需权衡马力(
hp)和加速性能(qsec)。
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 图形观察和代码编写的心得体会
技术层面:
ggplot2的图层叠加逻辑(如先密度图后等高线)和灵活的参数系统,使得复杂图表代码依然简洁。认知提升:
大数据可视化需优先解决过绘制问题,六边形分箱和核密度是两大核心工具。
密度图的“平滑”特性既能揭示规律,也可能掩盖异常值,需结合原始数据验证。
图形作用
六边形分箱图(
geom_hex()):解决点重叠问题二维核密度图(
stat_density_2d(geom="raster")):揭示概率分布核密度等高线:增强趋势识别
填充式密度图(
geom_density_2d_filled()):美观与功能兼备
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散点图:多维关系的立体呈现
在本次任务中,我使用**`scatterplot3d`**包绘制了**发动机马力(hp)、车重(wt)和燃油效率(mpg)**的3D散点图,并通过回归平面增强趋势解读。以下是关键体会:
**优势:**
1、3D图形能同时展示三个变量的交互作用,例如:**马力越大、车重越高的车辆,燃油效率(mpg)往往越低**,这一趋势通过回归平面直观呈现。
2、通过调整视角(**`angle`**参数),可以从不同角度观察数据分布,避免二维投影的信息丢失。
气泡图:二维空间的多维编码
通过
ggplot2绘制的气泡图,将四个变量(hp、mpg、wt、车重)压缩到二维平面,利用颜色和大小编码额外维度:设计逻辑:
X轴(hp)与Y轴(mpg)构成基础散点图。
颜色映射(color=wt):用渐变色(如蓝到红)表示车重,快速识别高车重样本。
大小映射(size=wt):气泡面积与车重成正比,强化视觉对比。
业务洞察:
- 图形清晰显示:马力(hp)与燃油效率(mpg)呈负相关,且车重(wt)越大的点(气泡更大、颜色更暖)通常位于右下角(高hp、低mpg),验证了“重载车辆更耗油”的假设。
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.0.1 1、数据准备与变量转换:因子化关键变量: 在绘制分组散点图前,需将分组变量cyl(气缸数)转化为因子,以确保ggplot2正确识别其为离散变量而非连续变量。
6.4.0.2 2、分组散点图:颜色与形状的双重编码
6.4.0.3 通过aes(shape=cyl, color=cyl),同时用形状和颜色区分不同气缸数的数据点,增强可读性:
优势:
双通道编码适合黑白打印(形状)和彩色展示(颜色),兼容不同输出需求。
直接观察各组(如4缸、6缸、8缸)中
wt与mpg的关系差异。
3、分面(Facet)技术:清晰的多组对比
使用facet_grid(~cyl, scales="free_x")按cyl分面,并允许X轴(wt)自由缩放:
分面效果:
每个面板独立展示不同气缸数的数据,避免重叠。
scales="free_x"适应各组车重(wt)范围差异(如8缸车普遍更重)。
业务洞察:
4缸车的
mpg普遍高于6缸和8缸,且车重较轻,符合小排量节能规律。回归线斜率差异可能反映发动机效率与车重的权衡关系。