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中的localtime()方法使用详解
May 22 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
Aug 15 Python
Python数据操作方法封装类实例
Jun 23 Python
Django ORM框架的定时任务如何使用详解
Oct 19 Python
聊聊Python中的pypy
Jan 12 Python
pandas 使用apply同时处理两列数据的方法
Apr 20 Python
python3使用QQ邮箱发送邮件
May 20 Python
python实现Excel文件转换为TXT文件
Apr 28 Python
Python实现串口通信(pyserial)过程解析
Sep 25 Python
python中图像通道分离与合并实例
Jan 17 Python
tensorflow多维张量计算实例
Feb 11 Python
python+opencv实现车道线检测
Feb 19 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
论建造顺序的重要性
2020/03/04 星际争霸
队列在编程中的实际应用(php)
2010/09/04 PHP
在openSUSE42.1下编译安装PHP7 的方法
2015/12/24 PHP
php文件上传类完整实例
2016/05/14 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
javascript开发中因空格引发的错误
2010/11/08 Javascript
jQuery实现可拖动的浮动层完整代码
2013/05/27 Javascript
禁止页面刷新让F5快捷键及右键都无效
2014/01/22 Javascript
Jquery判断form表单数据是否变化
2016/03/30 Javascript
学习掌握JavaScript中this的使用技巧
2016/08/29 Javascript
jQuery实现移动端Tab选项卡效果
2017/03/15 Javascript
纯jQuery实现前端分页功能
2017/03/23 jQuery
Javascript实现一个简单的输入关键字添加标签效果实例
2017/06/01 Javascript
Vue.js常用指令的使用小结
2017/06/23 Javascript
浅谈Vue SSR 的 Cookies 问题
2017/11/20 Javascript
在vue里使用codemirror遇到的问题
2018/11/01 Javascript
GOJS+VUE实现流程图效果
2018/12/01 Javascript
vue实现户籍管理系统
2020/05/29 Javascript
[01:55]TI9显影之尘系列 - Evil Geniuses
2019/08/22 DOTA
Python类的多重继承问题深入分析
2014/11/09 Python
Python语言快速上手学习方法
2018/12/14 Python
python 通过手机号识别出对应的微信性别(实例代码)
2019/12/22 Python
Django框架教程之中间件MiddleWare浅析
2019/12/29 Python
python爬虫中的url下载器用法详解
2020/11/30 Python
详解CSS3阴影 box-shadow的使用和技巧总结
2016/12/03 HTML / CSS
HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
2013/04/24 HTML / CSS
HTML5手机端弹出遮罩菜单特效代码
2016/01/27 HTML / CSS
移动端HTML5实现文件上传功能【附代码】
2016/03/25 HTML / CSS
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
安全生产活动月方案
2014/03/09 职场文书
党支部三会一课计划
2014/09/24 职场文书
企业党支部工作总结2015
2015/05/21 职场文书
Vue.js中v-for指令的用法介绍
2022/03/13 Vue.js
Redis中key的过期删除策略和内存淘汰机制
2022/04/12 Redis
Apache POI操作批量导入MySQL数据库
2022/06/21 Servers