Python使用Seaborn绘制钻石数据集可视化分析教程

山间有风
山间有风
发布时间:2026-10-12| 4人浏览过
原创

本文介绍如何利用Python的Seaborn库对钻石数据集进行可视化分析。通过scatterplot、lmplot和jointplot等函数,展示钻石重量、价格、切割等级及尺寸的相关性。涵盖主题设置、颜色映射、散点图趋势线及分布图绘制,帮助开发者掌握高颜值数据图表的制作技巧。

挑钻石第二弹

seaborn作为matplotlib的扩展库,提供了一系列美观的图形界面,并集成了多种在线数据集。通过sns.load_dataset()函数即可调用这些数据集供学习使用。若遇到网络不稳定的情况,可将数据集下载至本地,并在调用时将cache参数设置为True以启用本地缓存。

scatter_plot

官方示例展示了diamonds数据集中的钻石信息。diamonds数据集共包含十项关键指标,具体包括:重量(克拉)、切割等级、颜色、净度、深度百分比、table值、价格,以及x、y、z三个方向的尺寸数据。

首先观察x与y方向尺寸之间是否存在相关性。

import seaborn as sns
import matplotlib.pyplot as plt
# 本地加载数据集
dia = sns.load_dataset("diamonds",data_home="seaborn-data", cache=True)
# 以上几行代码后面不再重复书写
sns.scatterplot(x=dia['x'],y=dia['y'],size=5)
plt.show()  #用于显示图片,后文就不写了

图中x代表x轴数据,y代表y轴数据。从图中可以看出,大多数钻石的尺寸比例较为规则。

官方画廊生成的图像如下所示。

该图的横坐标表示重量(克拉),纵坐标表示价格。观察发现,钻石商人似乎存在某种“强迫症”,重量为2.0克拉、1.5克拉、1.0克拉等整数或半整数规格的钻石数量明显多于周围重量的钻石。

f, ax = plt.subplots(figsize=(6.5, 6.5))
sns.set_theme(style="whitegrid")
sns.despine(f, left=True, bottom=True)
clarity =  ["I1", "SI2", "SI1", "VS2", "VS1", "VVS2", "VVS1", "IF"]   #颜色深浅的顺序
sns.scatterplot(x="carat", y="price",         #声明x轴和y轴的值
    hue="clarity", size="depth",  #clarity和depth分别调控颜色和尺寸
    palette="ch:rot=-.2,d=.3_r",    #调色板
    style_order=clarity,sizes=(1,10), #颜色标识的顺序和尺寸范围
    linewidth=0,data=dia, ax=ax)
plt.show()

首先,set_theme函数用于设置绘图主题,其中style参数可以接收字符串或字典,用于调整整体主题风格。

其次,palette代表颜色映射。当其输入值为字符串时,其具体含义如下表所示。

缩写 取值范围
start s [0,3] 渐变始点颜色
rot r 用于调控色相
gamma g 不小于0 小于1时,提高暗部;大于1时,加强高光
hue h [0,1] Saturation of the colors.
dark d [0,1] 最暗处的强度
light l [0,1] 最亮处颜色的强度

sizes用于调整数据点的尺寸。当设置size参数时,系统会将size中的值映射到ssizes中,从而在图中体现点的大小差异。

注意到钻石属性中包含“切割水平”这一项,接下来我们将绘制切割等级与价格之间的关系图。

fig, ax = plt.subplots(figsize=(6.5, 6.5))
sns.set_theme(style="whitegrid")
sns.despine(fig, left=True, bottom=True)
sns.scatterplot(data = dia, x="carat", y="price",
    style="cut",hue='cut',
    linewidth=0)
plt.show()

去除渐变颜色后,图表的美观度有所下降,但我们可以发现very good并非最佳的切割等级。例如,在3.0克拉级别的钻石中,存在一颗very good级别的钻石价格最低。根据GIA的钻石分级标准,等级从高到低依次为Excellent、Very Good、Good、Fair和Poor。在该数据集中,ideal可能对应的是Excellent等级。

lmplot

若需更准确地观察cut对钻石价格的影响,可以通过lmplot在散点图基础上绘制趋势线。

sns.lmplot(data=dia, x="carat", y="price",hue='cut',markers = '.')
plt.show()

通过趋势线可以明显看出,ideal等级的钻石表现最佳。

jointplot

前述图表主要关注消费者关心的价格、尺寸及透明度等指标。然而,商家更关注价格、重量与销量之间的关系,这涉及数据分布问题。Seaborn提供了优秀的双变量关系图——jointplot,效果如下。

从图中可见,价格较低的钻石更为畅销。相关代码如下。

# 左图代码
sns.jointplot(data=dia, x="carat", y="price",xlim=(0,3),ylim=(0,17500), ratio=10,kind='hex',color="#4CB391")
# 右图代码
sns.jointplot(data=dia, x="carat", y="price",hue='cut', xlim=(0,3),ylim=(0,17500), ratio=10,marker='.')

其中,kind用于更改图像类型,sns库提供了六种可选风格:"scatter"、"kde"、"hist"、"hex"、"reg"和"resid"。

以上就是Python使用matplotlib和seaborn进行钻石数据可视化的详细内容,更多关于相关绘图技巧的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。