Python 使用 Plotly 绘制从二维到六维的高维数据可视化

阿麦
阿麦
发布时间:2026-10-13| 5人浏览过
原创

本文详解如何利用 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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

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

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 算法库。