Python 画出来六维图


Posted in Python onJuly 26, 2019

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

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

Python 相关文章推荐
Python中urllib+urllib2+cookielib模块编写爬虫实战
Jan 20 Python
Python多线程经典问题之乘客做公交车算法实例
Mar 22 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
Jul 24 Python
python在文本开头插入一行的实例
May 02 Python
python 统计列表中不同元素的数量方法
Jun 29 Python
利用Python实现kNN算法的代码
Aug 16 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
Aug 18 Python
Python for循环与getitem的关系详解
Jan 02 Python
TensorFlow实现指数衰减学习率的方法
Feb 05 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
Sep 24 Python
Python之多进程与多线程的使用
Feb 23 Python
Python 避免字典和元组的多重嵌套问题
Jul 15 Python
django做form表单的数据验证过程详解
Jul 26 #Python
python用win32gui遍历窗口并设置窗口位置的方法
Jul 26 #Python
解决python中导入win32com.client出错的问题
Jul 26 #Python
Django CBV类的用法详解
Jul 26 #Python
把django中admin后台界面的英文修改为中文显示的方法
Jul 26 #Python
Python中利用LSTM模型进行时间序列预测分析的实现
Jul 26 #Python
django的model操作汇整详解
Jul 26 #Python
You might like
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
2009/10/11 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
2013/01/23 PHP
PHP中如何定义和使用常量
2013/02/28 PHP
php中通过数组进行高效随机抽取指定条记录的算法
2013/09/09 PHP
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
PHP中把对象数组转换成普通数组的方法
2015/07/10 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
2017/03/31 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
JS代码格式化和语法着色V2
2006/10/14 Javascript
复制本贴标题和地址的js代码
2008/07/01 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
2013/11/22 Javascript
js获得当前时区夏令时发生和终止的时间代码
2014/02/23 Javascript
浅谈移动端之js touch事件 手势滑动事件
2016/11/07 Javascript
借助node实战JSONP跨域实例
2017/03/30 Javascript
Vue Router的懒加载路径的解决方法
2018/06/21 Javascript
React父子组件间的传值的方法
2018/11/13 Javascript
node.js实现为PDF添加水印的示例代码
2018/12/05 Javascript
Node.js原生api搭建web服务器的方法步骤
2019/02/15 Javascript
JQuery特殊效果和链式调用操作示例
2019/05/13 jQuery
Vue实现根据hash高亮选项卡
2019/05/27 Javascript
原生JS实现汇率转换功能代码实例
2020/05/13 Javascript
element-ui封装一个Table模板组件的示例
2021/01/04 Javascript
使用node-media-server搭建一个简易的流媒体服务器
2021/01/20 Javascript
[01:29]Ti4循环赛第三日精彩回顾
2014/07/13 DOTA
python格式化字符串实例总结
2014/09/28 Python
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
python实现录屏功能(亲测好用)
2020/03/02 Python
python matplotlib.pyplot.plot()参数用法
2020/04/14 Python
使用TensorBoard进行超参数优化的实现
2020/07/06 Python
详解Python高阶函数
2020/08/15 Python
你在项目中用到了xml技术的哪些方面?如何实现的?
2014/01/26 面试题
英文演讲稿开场白
2014/08/25 职场文书
健康状况证明模板
2014/10/23 职场文书
2015年科研工作总结范文
2015/05/13 职场文书
2016年六一儿童节开幕词
2016/03/04 职场文书
宝塔更新Python及Flask项目的部署
2022/04/11 Python