第五章 变量间关系可视化
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 图形观察和代码编写的心得体会
- 在数据可视化实践中,我深刻体会到选择合适的图形表达方式和精细调整图表参数的重要性。通过构建散点图矩阵,我观察到不同变量间的分布特征和相互关系,如上三角的核密度图清晰展示了数据分布形态,下三角的散点图则直观揭示了变量间的相关性趋势。在代码实现过程中,我学会了通过
lower
和upper
参数灵活配置图形类型,并认识到字体大小等细节调整对多变量图表可读性的关键作用。同时,也发现了代码结构的重要性——如加号位置、参数顺序等技术细节直接影响代码执行效果。这次实践让我明白,优秀的数据可视化需要兼顾统计洞察力与图形表现力:既要准确捕捉数据特征,又要通过合理的视觉编码让这些特征一目了然。未来在类似任务中,我会尝试引入颜色分组、相关系数标注等增强手段,使数据故事讲述更加生动完整。
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 图形观察和代码编写的心得体会
- 通过本次相关系数矩阵的绘制与分析实践,我深刻体会到数据可视化在揭示变量关系中的强大作用。从图形结果中,我观察到wt与disp呈现显著负相关(r=-0.87),印证了车辆工程中的实际规律;而drat与qsec的中等正相关(r=0.68)则揭示了传动系统与加速性能的潜在联系。在代码实现过程中,我掌握了通过dplyr精准筛选变量、用ggCor函数配置热力图参数(如设置digits=2控制精度)以及调整主题细节(如字体大小)等关键技术。这次实践让我认识到,优秀的数据分析需要统计严谨性与视觉表现力的完美结合——既要保证数学计算的准确性,又要通过合理的颜色编码(红-白-蓝渐变)和标签设计使复杂关系一目了然。未来我将进一步探索如何在可视化中融入置信区间等统计指标,使数据洞察更加立体全面。
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 图形观察和代码编写的心得体会
- 在数据可视化实践中,我深刻认识到图形选择与参数调整对展现数据特征的关键作用。通过六边形分箱图有效处理大数据重叠,核密度图清晰呈现概率分布,而叠加散点的等高线图则实现了宏观分布与微观数据的统一展示。代码实现中,掌握几何对象(如geom_hex)与视觉编码(如viridis色阶)的配合使用至关重要,同时参数拼写准确性直接影响执行结果。这让我体会到优秀可视化需要兼顾统计严谨性与视觉表现力——既要准确反映数据特征,又要通过合理的图形设计让洞察一目了然。未来将更注重多视图协同与交互式探索,以提升分析深度。
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 图形观察和代码编写的心得体会
- 在三维散点图和气泡图的绘制实践中,我深刻体会到数据可视化对多维关系呈现的独特价值。通过scatterplot3d绘制的三维散点图配合回归平面,直观展示了马力(hp)、车重(wt)与油耗(mpg)的复杂关系,而气泡图则通过点的大小和颜色双重编码,巧妙地将三维信息压缩到二维平面。代码实现中,掌握scatterplot3d的plane3d()添加回归平面、ggplot2的size和color美学映射是关键,同时认识到主题细节调整(如网格线、图例样式)对图形专业度的提升作用。这让我明白,针对不同维度的数据特征,需要选择最适合的可视化形式——高维数据可用三维展示或二维降维编码,而恰当的视觉元素(颜色、大小、透明度)组合能有效增强图表的信息密度。未来将更注重交互式三维可视化探索,并深入研究多维数据的降维表达技巧。
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 图形观察和代码编写的心得体会
- 在分组散点图的绘制实践中,我深刻认识到数据预处理和可视化参数设置对分析结果呈现的关键作用。通过将气缸数转换为因子变量,实现了准确的数据分组;利用颜色和形状双重编码配合分面显示,既保持了各组数据的独立性,又确保了整体可比性。添加分面回归线后,不同气缸数下车重与燃油效率的关系差异一目了然——4缸车表现出明显的轻量化与高效节能特征,而8缸车则呈现更高的油耗水平。这让我体会到,优秀的可视化应当做到:1)数据转换准确无误;2)视觉编码清晰有效;3)分析结论直观可见。特别是在处理分类变量时,分面与分组绘图的结合能有效揭示变量间的复杂关系,而适当的主题调整(如移除冗余图例)则能进一步提升图表的可读性。这种可视化方法为探索分类变量对连续变量的影响提供了清晰直观的分析路径。