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笔记(2)
Oct 24 Python
讲解Python中运算符使用时的优先级
May 14 Python
Windows中安装使用Virtualenv来创建独立Python环境
May 31 Python
Python实现的下载网页源码功能示例
Jun 13 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
Jun 11 Python
Django 实现购物车功能的示例代码
Oct 08 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
Jul 11 Python
Python Django基础二之URL路由系统
Jul 18 Python
用Python抢火车票的简单小程序实现解析
Aug 14 Python
Python 仅获取响应头, 不获取实体的实例
Aug 21 Python
Django之choices选项和富文本编辑器的使用详解
Apr 01 Python
Python接口自动化测试框架运行原理及流程
Nov 30 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 无限分类三种方式 非函数的递归调用!
2011/08/26 PHP
Windows中使用计划任务自动执行PHP程序实例
2014/05/09 PHP
php json中文编码为null的解决办法
2016/12/14 PHP
Yii2实现UploadedFile上传文件示例
2017/02/15 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
几个比较实用的JavaScript 测试及效验工具
2010/04/18 Javascript
location对象的属性和方法应用(解析URL)
2013/04/12 Javascript
jquery等待效果示例
2014/05/01 Javascript
让IE8浏览器支持function.bind()方法
2014/10/16 Javascript
JavaScript html5 canvas绘制时钟效果
2016/03/01 Javascript
JS基础随笔(菜鸟必看篇)
2016/07/13 Javascript
jQuery图片加载显示loading效果
2016/11/04 Javascript
jQuery得到多个值只能用取Class ,不能用取ID的方法
2016/12/04 Javascript
AngularJS service之select下拉菜单效果
2017/07/28 Javascript
Node.js搭建小程序后台服务
2018/01/03 Javascript
vue3修改link标签默认icon无效问题详解
2019/10/09 Javascript
JavaScript内置对象之Array的使用小结
2020/05/12 Javascript
浅谈vue 多个变量同时赋相同值互相影响
2020/08/05 Javascript
python实现TCP服务器端与客户端的方法详解
2015/04/30 Python
多版本Python共存的配置方法
2017/05/22 Python
Opencv-Python图像透视变换cv2.warpPerspective的示例
2019/04/11 Python
opencv调整图像亮度对比度的示例代码
2019/09/27 Python
如何理解Python中的变量
2020/06/01 Python
keras实现多种分类网络的方式
2020/06/11 Python
css3与html5实现响应式导航菜单(导航栏)效果分享
2014/02/12 HTML / CSS
详解CSS3 Media Queries中媒体属性的使用
2016/02/29 HTML / CSS
HTML5边玩边学(1)画布实现方法
2010/09/21 HTML / CSS
上海某公司.net方向笔试题
2014/09/14 面试题
给水排水工程专业毕业生推荐信
2013/10/28 职场文书
国贸专业的职业规划范文
2014/01/23 职场文书
老同学聚会感言
2014/02/23 职场文书
餐厅总厨求职信
2014/03/04 职场文书
解除劳动合同协议书
2014/04/14 职场文书
大班下学期个人总结
2015/02/13 职场文书
2015年环保局工作总结
2015/05/22 职场文书
MySQL基于索引的压力测试的实现
2021/11/07 MySQL