Python 画出来六维图

作者:Python大本营 时间:2022-03-14 04:01:15 

Python 画出来六维图

来自 *

我们的大脑通常最多能感知三维空间,超过三维就很难想象了。尽管是三维,理解起来也很费劲,所以大多数情况下都使用二维平面。

不过,我们仍然可以绘制出多维空间,今天就来用 Python 的 plotly 库绘制下三维到六维的图,看看长什么样。

数据我们使用一份来自 UCI 的真实汽车数据集,该数据集包括 205 个样本和 26 个特征,从中选择 6 个特征来绘制图形:

Python 画出来六维图

基础工作

安装好 plotly 包:


pip install plotly

加载数据集(文末会提供):


import pandas as pd
data = pd.read_csv("cars.csv")

下面我们先绘制基础的二维图表,使用两个 RPM 和 Speed 两个特征即可:

绘制 2-D 图

Python 画出来六维图

代码实现如下:


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 方法绘制三维图:

Python 画出来六维图

代码实现如下:


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)添加到原先的三维图中,用颜色深浅表示,这样就绘制出了四维图。可以看到当其他三个指标(马力、车身重量、车价格)越高时:车辆油耗是越少的。

Python 画出来六维图

绘制 5-D 图

基于这样的思想,我们还可以通过修改圆形大小再增加一个维度——发动机尺寸(engine-size)变成五维图:

Python 画出来六维图

我们仍然可以比较容易地地发现:车越贵,发动机尺寸越大这样的规律。

绘制 6-D 图

接着还可以通过更改形状的方式增加第六个维度——车门数,圆形表示四车门,方形表示两车门。通常两个车门的都是昂贵的豪华跑车,在图中也可以看出方形主要集中在价格比较高的区域。

Python 画出来六维图

这样我们就从普通的二维图扩展到了高维图,当然还可以继续拓展,不过分辨起来会越来越困难。

源码下载地址

原文链接:

https://medium.com/@prasadostwal/multi-dimension-plots-in-python-from-2d-to-6d-9a2bf7b8cc74

来源:https://blog.csdn.net/weixin_42232219/article/details/94244542

标签:Python,六维图
0
投稿

猜你喜欢

  • Golang Compare And Swap算法详细介绍

    2024-02-19 16:08:02
  • Python抓取京东图书评论数据

    2023-10-16 09:26:37
  • PyTorch一小时掌握之图像识别实战篇

    2023-01-28 00:08:01
  • mysql第一次安装成功后初始化密码操作步骤

    2024-01-19 22:20:45
  • JavaScript实现酷炫的鼠标拖尾特效

    2024-06-16 16:02:25
  • php 深入理解strtotime函数的使用详解

    2024-05-03 15:53:03
  • PyQt5创建一个新窗口的实例

    2021-12-31 02:49:44
  • 如何提高Request集合的使用效率?

    2010-06-07 20:53:00
  • 使用Title提升可访问性二

    2009-11-16 12:53:00
  • go语言中的return语句

    2024-05-28 15:22:09
  • CentOS 7中升级MySQL 5.7.23的坑与解决方法

    2024-01-16 21:54:53
  • vue3和ts封装axios以及使用mock.js详解

    2024-04-28 09:27:47
  • Python Tkinter实例——模拟掷骰子

    2022-09-17 09:51:07
  • 详解一种用django_cache实现分布式锁的方式

    2023-11-08 03:50:45
  • django基础之数据库操作方法(详解)

    2024-01-19 12:42:25
  • 如何在Django项目中引入静态文件

    2021-10-09 11:24:52
  • numpy 产生随机数的几种方法

    2021-08-28 02:33:54
  • Django多数据库的实现过程详解

    2024-01-21 17:47:21
  • Python学习之字典和集合的使用详解

    2022-11-01 19:54:21
  • pytorch中交叉熵损失函数的使用小细节

    2021-08-30 05:02:21
  • asp之家 网络编程 m.aspxhome.com