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 相关文章推荐
django 自定义用户user模型的三种方法
Nov 18 Python
python中string模块各属性以及函数的用法介绍
May 30 Python
Python实现统计代码行的方法分析
Jul 12 Python
Python 多进程并发操作中进程池Pool的实例
Nov 01 Python
Python三种遍历文件目录的方法实例代码
Jan 19 Python
几种实用的pythonic语法实例代码
Feb 24 Python
Python Selenium Cookie 绕过验证码实现登录示例代码
Apr 10 Python
PyCharm设置每行最大长度限制的方法
Jan 16 Python
python实现两个经纬度点之间的距离和方位角的方法
Jul 05 Python
Python3基于print打印带颜色字符串
Jul 06 Python
如何基于matlab相机标定导出xml文件
Nov 02 Python
python unittest单元测试的步骤分析
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
PHP4实际应用经验篇(6)
2006/10/09 PHP
PHP分页函数代码(简单实用型)
2010/12/02 PHP
thinkPHP实现多字段模糊匹配查询的方法
2016/12/01 PHP
javascript数组使用调用方法汇总
2007/12/08 Javascript
javascript(jquery)利用函数修改全局变量的代码
2009/11/02 Javascript
jQuery学习笔记 操作jQuery对象 文档处理
2012/09/19 Javascript
jQuery function的正确书写方法
2013/08/02 Javascript
javascript 实现子父窗体互相传值的简单实例
2014/02/17 Javascript
node.js中的fs.ftruncate方法使用说明
2014/12/15 Javascript
原生javascript实现图片按钮切换
2015/01/12 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
2020/12/24 Javascript
基于BootStrap的图片轮播效果展示实例代码
2016/05/23 Javascript
AngularJS表达式讲解及示例代码
2016/08/16 Javascript
div中文字内容溢出常见的解决方法
2017/03/16 Javascript
javascript 通过键名获取键盘的keyCode方法
2017/12/31 Javascript
JS实现带导航城市列表以及输入搜索功能
2018/01/04 Javascript
npm全局模块卸载及默认安装目录修改方法
2018/05/15 Javascript
vux uploader 图片上传组件的安装使用方法
2018/05/15 Javascript
Element-ui自定义table表头、修改列标题样式、添加tooltip、:render-header使用
2019/04/11 Javascript
详解关于表格合并span-method方法的补充(表格数据由后台动态返回)
2019/05/21 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
2020/05/28 Javascript
vue实现公告栏文字上下滚动效果的示例代码
2020/06/16 Javascript
javascript实现搜索筛选功能实例代码
2020/11/12 Javascript
Python的函数嵌套的使用方法
2014/01/24 Python
详解Python使用simplejson模块解析JSON的方法
2016/03/24 Python
用Python写一个无界面的2048小游戏
2016/05/24 Python
Python3中详解fabfile的编写
2018/06/24 Python
Python代码实现删除一个list里面重复元素的方法
2019/04/02 Python
使用Python文件读写,自定义分隔符(custom delimiter)
2020/07/05 Python
CSS3教程(5):网页背景图片
2009/04/02 HTML / CSS
师范大学毕业自我鉴定
2013/11/21 职场文书
2014年最新离婚协议书范本
2014/10/11 职场文书
2019年公司卫生管理制度样本
2019/08/21 职场文书
MySQL中使用or、in与union all在查询命令下的效率对比
2021/05/26 MySQL
原生JS实现飞机大战小游戏
2021/06/09 Javascript
如何利用python创作字符画
2022/06/25 Python