Python 使用 Plotly 绘制从二维到六维的高维数据可视化
本文详解如何利用 Python 的 Plotly 库,将汽车数据集从基础的二维散点图逐步扩展至六维可视化。通过引入颜色、大小、形状等视觉编码,分别映射油耗、发动机尺寸及车门数,实现多维数据的直观展示与规律分析。

引言与数据准备
内容来源参考自维基百科。
人类大脑通常最多只能直观感知三维空间,超出这一维度的空间想象极具挑战性。即便是在三维空间中,理解复杂的几何关系也往往令人感到吃力,因此在实际应用中,二维平面是最为常用的表达方式。
然而,我们依然有能力绘制出多维空间的数据分布。本文将演示如何使用 Python 中的 plotly 库,生成从三维到六维的图表,以直观展示高维数据的形态特征。
本次示例使用的数据来自 UCI 机器学习仓库中的真实汽车数据集。该数据集包含 205 个样本,每个样本拥有 26 个特征。为了演示高维绘制,我们从中选取了 6 个关键特征进行图形构建:

环境准备
首先,需要确保环境中已安装 plotly 库:
环境配置与基础二维绘图
pip install plotly
接着加载数据集(完整代码见文末):
import pandas as pd
data = pd.read_csv("cars.csv")
首先,我们绘制基础的二维图表,仅需选取 RPM 和 Speed 这两个特征即可实现:
绘制 2-D 图

具体代码实现如下:
import plotly
import plotly.graph_objs as go
#绘制散点图
fig1 = go.Scatter(x=data['curb-weight'],
y=data['price'],
mode='markers')
#绘制布局
mylayout = go.Layout(xaxis=dict(title="curb-weight"),
yaxis=dict( title="price"))
#绘图 html
plotly.offline.plot({"data": [fig1],
"layout": mylayout},
auto_open=True)
生成的图表可以保存为 html 文件,打开后即可生成交互式界面;同时,也支持将其保存为 png 静态图片。
接下来,通过增加特征维度来绘制三维图表。
绘制 3-D 图
利用 plotly 提供的 plot.Scatter3D 方法,可以方便地绘制三维散点图:

代码实现如下:
三维至六维可视化进阶
fig1 = go.Scatter3d(x=data['curb-weight'],
y=data['horsepower'],
z=data['price'],
marker=dict(opacity=0.9,
reversescale=True,
colorscale='Blues',
size=5),
line=dict (width=0.02),
mode='markers')
mylayout = go.Layout(scene=dict(xaxis=dict( title="curb-weight"),
yaxis=dict( title="horsepower"),
zaxis=dict(title="price")),)
plotly.offline.plot({"data": [fig1],
"layout": mylayout},
auto_open=True,
filename=("3DPlot.html"))
那么,如何绘制更高维度的图表呢?显然,单纯扩展坐标轴的方式无法实现。这里有一个技巧:通过引入“虚拟维度”,利用不同的颜色、标记大小或形状类别来承载额外信息。借助这种方法,即可在三维基础上展示第四个维度。
绘制 4-D 图
在原有的三维图中,我们将第四个变量——车辆油耗(city-mpg)引入,并通过颜色的深浅来表征该变量。由此,我们成功绘制出了四维图。观察图表可以发现一个规律:当其他三个指标(马力、车身重量、车价格)越高时,车辆油耗往往越低。

绘制 5-D 图
基于上述思路,我们可以通过调整圆形标记的大小,再增加一个维度——发动机尺寸(engine-size),从而构建出五维图:

通过这种可视化方式,我们依然能够较为清晰地观察到:车价越高的车辆,其发动机尺寸通常也越大这一规律。
绘制 6-D 图
进一步地,我们可以通过更改标记的形状来增加第六个维度——车门数。在图中,圆形代表四门车,方形代表两门车。通常,两门车多为昂贵的豪华跑车,从图中也可以看出,方形标记主要集中在价格较高的区域。

至此,我们完成了从普通二维图到高维图的扩展。虽然理论上可以继续拓展更多维度,但随着维度增加,图表的可分辨性会逐渐降低。
源码下载地址
原文链接:
https://medium.com/@prasadostwal/multi-dimension-plots-in-python-from-2d-to-6d-9a2bf7b8cc74
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









