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 Web框架Flask下网站开发入门实例
Feb 08 Python
python使用chardet判断字符串编码的方法
Mar 13 Python
python爬虫框架talonspider简单介绍
Jun 09 Python
itchat接口使用示例
Oct 23 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
Jan 08 Python
Python数字图像处理之霍夫线变换实现详解
Jan 12 Python
python 保存float类型的小数的位数方法
Oct 17 Python
对Python w和w+权限的区别详解
Jan 23 Python
对python中的装包与解包实例详解
Aug 24 Python
python通过文本在一个图中画多条线的实例
Feb 21 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
Aug 31 Python
Python获取江苏疫情实时数据及爬虫分析
Aug 02 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利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
PHP实现防止表单重复提交功能【基于token验证】
2018/05/24 PHP
js apply/call/caller/callee/bind使用方法与区别分析
2009/10/28 Javascript
javascript 类型判断代码分析
2010/03/28 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
2013/08/08 Javascript
用javascript删除当前行,添加行(示例代码)
2013/11/25 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
2016/05/12 Javascript
JavaScript中的boolean布尔值使用学习及相关技巧讲解
2016/05/26 Javascript
关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法
2016/06/30 Javascript
AngularJS ng-bind 指令简单实现
2016/07/30 Javascript
jQuery与JS加载事件用法分析
2016/09/04 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
2017/04/13 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
2017/04/29 Javascript
vue click.stop阻止点击事件继续传播的方法
2018/09/04 Javascript
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
2019/04/28 jQuery
微信小程序封装自定义弹窗的实现代码
2019/05/08 Javascript
layui 弹出层值回传解决方式
2019/11/14 Javascript
基于vue+element实现全局loading过程详解
2020/07/10 Javascript
vue脚手架项目创建步骤详解
2021/03/02 Vue.js
[03:26]回顾2015国际邀请赛中国区预选赛
2015/06/09 DOTA
Mac中升级Python2.7到Python3.5步骤详解
2017/04/27 Python
python简单图片操作:打开\显示\保存图像方法介绍
2017/11/23 Python
python实现视频分帧效果
2019/05/31 Python
Python写出新冠状病毒确诊人数地图的方法
2020/02/12 Python
python爬虫把url链接编码成gbk2312格式过程解析
2020/06/08 Python
电气自动化自荐信
2013/10/10 职场文书
个人优缺点自我评价
2014/01/27 职场文书
社会学专业求职信
2014/02/24 职场文书
高三学习决心书
2014/03/11 职场文书
大学生求职信范文
2014/05/24 职场文书
离职保密承诺书
2014/05/28 职场文书
师范生求职信
2014/06/14 职场文书
行政执法作风整顿剖析材料
2014/10/11 职场文书
Vue图片裁剪组件实例代码
2021/07/02 Vue.js