Python使用Matplotlib和Seaborn绘制钻石数据的小提琴图与箱线图
本文介绍如何利用Python的Seaborn库结合Matplotlib,对钻石数据集进行可视化分析。通过箱线图展示不同切割等级(如Premium、Ideal等)的价格分布及异常值,并使用增强箱线图(boxenplot)和小提琴图(violinplot)深入观察数据分布特征,帮助理解钻石重量、颜色、透明度等维度与价格的关联。
鉴于此前关于使用Python为伴侣挑选钻石的文章受到广泛欢迎,本文作为后续内容继续展开讨论。
若读者已阅读过前作,可直接跳至箱线图部分开始阅读。
Seaborn作为Matplotlib的扩展库,提供了多种美观的图形界面,并集成了多个在线数据集。通过调用sns.load_dataset()即可获取数据供学习使用;若网络环境不稳定,可将数据集下载至本地,并在调用时将cache参数设置为True以启用本地缓存。
在diamonds数据集中包含了钻石的相关信息,共计十项指标,具体包括:重量(克拉)carat、切割质量cut、颜色color、净度clarity、深度depth、台面table、价格price,以及x、y、z三个方向的尺寸x、y、z。
绘图的第一步是导入必要的库并加载数据。
import seaborn as sns
import matplotlib.pyplot as plt
# 本地加载数据集
dia = sns.load_dataset("diamonds",data_home="seaborn-data", cache=True)
# 以上几行代码后面不再重复书写
箱线图
为了探究Premium、Fair、Very Good、Good和Ideal这五种切割等级所对应的价格区间,最直观的方法是绘制箱线图,其形态类似于金融领域的K线图。

图中的箱体和须线展示了五个关键统计量:最小非异常值、第一四分位数(25%)、中位数、第三四分位数(75%)以及最大非异常值。箱体上方的散点代表异常值,数据显示价格超过1.5万美元的钻石属于极端异常值。
>>> sns.boxplot(x="cut",y="price",data=dia,color='lightblue',fliersize=0.25)
>>> plt.show()
其中,fliersize参数用于控制异常值点的大小。
增强箱线图
虽然标准箱线图能描述基本分布,但仅包含五个统计量,信息量仍显不足。
Seaborn提供了增强版的箱线图功能:boxenplot。

该图表对价格区间进行了细分,箱体的宽度反映了该区间内样本数量的多少,箱体越宽代表样本越密集。
sns.boxenplot(x="cut",y="price",data=dia,
palette="ch:rot=-.5,d=.3_r")
plt.show()
小提琴图
若需更细致地观察数据分布形态,可以使用小提琴图。

sns.violinplot(x="cut",y="price",data=dia)
sns.despine(left=True)
从图中可见,切割等级为Ideal(最好)的钻石,其价格主要集中在1000美元左右,虽然这一现象看似反常,但确实反映了数据的真实分布情况。
以上即为利用Python、Matplotlib及Seaborn绘制钻石数据的小提琴图和箱线图的完整内容,更多相关可视化技巧请参阅本站其他文章。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













