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版
Dec 07 Python
python发送arp欺骗攻击代码分析
Jan 16 Python
Python Web框架Flask下网站开发入门实例
Feb 08 Python
用Python实现斐波那契(Fibonacci)函数
Mar 25 Python
Python读取图片属性信息的实现方法
Sep 11 Python
python解决汉字编码问题:Unicode Decode Error
Jan 19 Python
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
Jul 30 Python
Python实现破解猜数游戏算法示例
Sep 25 Python
python实现一个简单的ping工具方法
Jan 31 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
Jun 17 Python
pandas 如何分割字符的实现方法
Jul 29 Python
Python2与Python3的区别详解
Feb 09 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
windows下配置apache+php+mysql时出现问题的处理方法
2014/06/20 PHP
自定义session存储机制避免会话保持问题
2014/10/08 PHP
PHP7新特性foreach 修改示例介绍
2016/08/26 PHP
PHP7.1新功能之Nullable Type用法分析
2016/09/26 PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
2019/09/23 PHP
php与阿里云短信接口接入操作案例分析
2020/05/27 PHP
浅谈JavaScript之事件绑定
2013/07/08 Javascript
jQuery is()函数用法3例
2014/05/06 Javascript
简单解析JavaScript中的__proto__属性
2016/05/10 Javascript
第一次接触神奇的Bootstrap表单
2016/07/27 Javascript
js如何判断是否在iframe中及防止网页被别站用iframe嵌套
2017/01/11 Javascript
JavaScript制作简易计算器(不用eval)
2017/02/05 Javascript
javascript事件的绑定基础实例讲解(34)
2017/02/14 Javascript
原生JS实现垂直手风琴效果
2017/02/19 Javascript
使用原生的javascript来实现轮播图
2017/02/24 Javascript
vue loadmore组件上拉加载更多功能示例代码
2017/07/19 Javascript
详解Vue的computed(计算属性)使用实例之TodoList
2017/08/07 Javascript
Vue进度条progressbar组件功能
2018/04/17 Javascript
vue 使某个组件不被 keep-alive 缓存的方法
2018/09/21 Javascript
js隐式转换的知识实例讲解
2018/09/28 Javascript
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
Emberjs 通过 axios 下载文件的方法
2019/09/03 Javascript
layer.prompt输入层的例子
2019/09/24 Javascript
JS对象属性的检测与获取操作实例分析
2020/03/17 Javascript
vue+iview实现文件上传
2020/11/17 Vue.js
Django中Model的使用方法教程
2018/03/07 Python
django 连接数据库出现1045错误的解决方式
2020/05/14 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
2020/06/24 Python
美国在线和移动免费会员制批发零售商:Boxed(移动端的Costco)
2020/01/02 全球购物
银行贷款委托书范本
2014/10/11 职场文书
2015年安全教育月活动总结
2015/03/26 职场文书
人事行政主管岗位职责
2015/04/09 职场文书
2019最新版火锅店的创业计划书 !
2019/07/12 职场文书
Python深度学习之Pytorch初步使用
2021/05/20 Python
Python上下文管理器Content Manager
2021/06/26 Python
Python实现对齐打印 format函数的用法
2022/04/28 Python