六维图见过么?Python 画出来了

论坛 期权论坛 期权     
Python大本营   2019-6-29 20:45   3134   0

来自维基百科
作者 |苏克1900
来源 | 高级农民工(ID:Mocun6)

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

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

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




[h2]基础工作[/h2]
安装好 plotly 包:
  1. pip install plotly
复制代码
加载数据集(文末会提供):
  1. import pandas as pd
复制代码
  1. data = pd.read_csv("cars.csv")
复制代码
下面我们先绘制基础的二维图表,使用两个 RPM 和 Speed 两个特征即可:

[h2]绘制 2-D 图[/h2]



代码实现如下:
  1. import plotly
复制代码
  1. import plotly.graph_objs as go
复制代码
  1. [/code][code]#绘制散点图
复制代码
  1. fig1 = go.Scatter(x=data['curb-weight'],
复制代码
  1.                   y=data['price'],
复制代码
  1.                   mode='markers')
复制代码
  1. [/code][code]#绘制布局
复制代码
  1. mylayout = go.Layout(xaxis=dict(title="curb-weight"),
复制代码
  1.                      yaxis=dict( title="price"))
复制代码
  1. [/code][code]#绘图 html
复制代码
  1. plotly.offline.plot({"data": [fig1],
复制代码
  1.                      "layout": mylayout},
复制代码
  1.                      auto_open=True)
复制代码
保存为 html 文件打开可以生成交互界面,也可以保存为 png 图片。

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

[h2]绘制 3-D 图[/h2]
可以使用 plotly 的 plot.Scatter3D 方法绘制三维图:




代码实现如下:
  1. fig1 = go.Scatter3d(x=data['curb-weight'],
复制代码
  1.                     y=data['horsepower'],
复制代码
  1.                     z=data['price'],
复制代码
  1.                     marker=dict(opacity=0.9,
复制代码
  1.                                 reversescale=True,
复制代码
  1.                                 colorscale='Blues',
复制代码
  1.                                 size=5),
复制代码
  1.                     line=dict (width=0.02),
复制代码
  1.                     mode='markers')
复制代码
  1. [/code][code]mylayout = go.Layout(scene=dict(xaxis=dict( title="curb-weight"),
复制代码
  1.                                 yaxis=dict( title="horsepower"),
复制代码
  1.                                 zaxis=dict(title="price")),)
复制代码
  1. [/code][code]plotly.offline.plot({"data": [fig1],
复制代码
  1.                      "layout": mylayout},
复制代码
  1.                      auto_open=True,
复制代码
  1.                      filename=("3DPlot.html"))
复制代码
如何绘制更高维度的图呢?显然无法通过扩展坐标轴的形式,不过有个小技巧就是制造一个虚拟维度,可以用不同颜色、形状大小、形状类别来入手。这样就可以显示第四个维度了。

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



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




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

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




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

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

(*本文仅代表作者观点,转载请联系原作者)

精彩推荐

比写代码更重要的是抓住下一个技术风口。6月AI技术福利,亚马逊、微软、BTA、滴滴、字节跳动、美团等一线公司大牛带你一起探索机器学习、数据分析、自然语言处理、知识图谱等热门技术领域的未来方向以及落地实践。

限免即将结束,速领~



推荐阅读:

你点的每个“在看”,我都认真当成了喜欢
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:190
帖子:38
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP