python slice函数画高维图_六维图见过么?Python 画出来了!

译者 | 高级农民工

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

3823999bc1310022d54a7f11117aec52

来自维基百科

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

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

ff40e45e8e4bd7228df274c93212cd59

2ca277ca09c037f3f30a9fee2fc8efa8

基础工作

安装好 plotly 包:

pip install plotly

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

import pandas as pd

data = pd.read_csv("cars.csv")

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

86986d237d8d1f914688282aad781b51

绘制 2-D 图

7ed9ee6742e98adc79c300f460c7cdda

代码实现如下:

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 图片。

下面增加特征来绘制三维图。

8325191344b41745082b704dc93f0027

绘制 3-D 图

可以使用 plotly 的 plot.Scatter3D 方法绘制三维图:

fe6cec08bb21969238695d5d222f0940

代码实现如下:

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"))

如何绘制更高维度的图呢?显然无法通过扩展坐标轴的形式,不过有个小技巧就是制造一个虚拟维度,可以用不同颜色、形状大小、形状类别来入手。这样就可以显示第四个维度了。

13ab12afed989760ba4002939fec029e

绘制 4-D 图

下面我们将第四个变量——车辆油耗(city-mpg)添加到原先的三维图中,用颜色深浅表示,这样就绘制出了四维图。可以看到当其他三个指标(马力、车身重量、车价格)越高时:车辆油耗是越少的。

d7a332b68184f84011e410f068586f76

d85fffd4fbc1aab7710ebb58ce83619b

绘制 5-D 图

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

b1a4f59f8044bcbf14d1a4b3d4e1884a

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

db056f348e04828df0802d0a9cc1b221

绘制 6-D 图

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

ebd52b9b468cdb8950edef0d18d53cf3

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

源码:

链接:https://pan.baidu.com/s/1_Ij0qA8JduUHtbSqefCjuQ

提取码:avl8

原文:

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

3722674082a58fed10ee03f11aee5367

9e6fe1ae7cc7ca6902ddb183cfe5cb7d

热 文 推 荐

4691911733a896dd1d4c2664e0769cbd点击阅读原文,输入关键词,搜索CSDN文章。

6cba9abe9f2c434df7bd9c0d0d6e1156

你点的每个“在看”,我都认真当成了喜欢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值