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使用smtplib模块通过gmail实现邮件发送的方法
May 08 Python
Python实现高效求解素数代码实例
Jun 30 Python
python实现RSA加密(解密)算法
Feb 17 Python
django+js+ajax实现刷新页面的方法
May 22 Python
Python3实现发送QQ邮件功能(html)
Dec 15 Python
详解appium+python 启动一个app步骤
Dec 20 Python
python实现周期方波信号频谱图
Jul 21 Python
Python文件读写w+和r+区别解析
Mar 26 Python
解决python图像处理图像赋值后变为白色的问题
Jun 04 Python
pytorch使用horovod多gpu训练的实现
Sep 09 Python
pycharm配置QtDesigner的超详细方法
Jan 25 Python
pandas 操作 Excel操作总结
Mar 31 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与javascript的两种交互方式
2006/10/09 PHP
Apache中php.ini的设置方法
2013/02/28 PHP
PHP微信开发之二维码生成类
2015/06/26 PHP
PHP 7.0.2 正式版发布
2016/01/08 PHP
php闭包中使用use声明变量的作用域实例分析
2018/08/09 PHP
php模拟实现斗地主发牌
2020/04/22 PHP
基于jQuery的input输入框下拉提示层(自动邮箱后缀名)
2012/06/14 Javascript
js判断是否为ie的方法小结
2014/01/13 Javascript
动态加载JavaScript文件的两种方法
2016/04/22 Javascript
jQuery实现的可编辑表格完整实例
2016/06/20 Javascript
bootstrap读书笔记之CSS组件(上)
2016/10/17 Javascript
微信小程序 下拉列表的实现实例代码
2017/03/08 Javascript
JavaScript队列函数和异步执行详解
2017/06/19 Javascript
angularjs数组判断是否含有某个元素的实例
2018/02/27 Javascript
vue内置指令详解
2018/04/03 Javascript
浅谈vue项目如何打包扔向服务器
2018/05/08 Javascript
开发一个Parcel-vue脚手架工具(详细步骤)
2018/09/22 Javascript
vue-cli3环境变量与分环境打包的方法示例
2019/02/18 Javascript
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
vue指令做滚动加载和监听等
2019/05/26 Javascript
vue elementUI使用tabs与导航栏联动
2019/06/21 Javascript
[02:12]探秘2016国际邀请赛中国区预选赛选手房间
2016/06/25 DOTA
python版本坑:md5例子(python2与python3中md5区别)
2017/06/20 Python
Python在for循环中更改list值的方法【推荐】
2018/08/17 Python
基于Python实现用户管理系统
2019/02/26 Python
python、PyTorch图像读取与numpy转换实例
2020/01/13 Python
keras 自定义loss model.add_loss的使用详解
2020/06/22 Python
python 星号(*)的多种用途
2020/09/21 Python
俄罗斯购买内衣网站:Trusiki
2020/08/22 全球购物
2014学年自我鉴定
2014/02/23 职场文书
模具设计与制造专业求职信
2014/07/19 职场文书
毕业生自我鉴定范文
2019/05/13 职场文书
聊一聊python常用的编程模块
2021/05/14 Python
python 命令行传参方法总结
2021/05/25 Python
Mysql 如何查询时间段交集
2021/06/08 MySQL
vue-cil之axios的二次封装与proxy反向代理使用说明
2022/04/07 Vue.js