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获取DLL和EXE文件版本号的方法
Mar 10 Python
Python学生信息管理系统修改版
Mar 13 Python
python 匹配url中是否存在IP地址的方法
Jun 04 Python
很酷的python表白工具 你喜欢我吗
Apr 11 Python
python代码 FTP备份交换机配置脚本实例解析
Aug 01 Python
python中必要的名词解释
Nov 20 Python
Django自带的加密算法及加密模块详解
Dec 03 Python
python实现双色球随机选号
Jan 01 Python
Python学习之os模块及用法
Jun 03 Python
Python基于os.environ从windows获取环境变量
Jun 09 Python
Python浮点型(float)运算结果不正确的解决方案
Sep 22 Python
Python jieba结巴分词原理及用法解析
Nov 05 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
如何提高MYSQL数据库的查询统计速度 select 索引应用
2007/04/11 PHP
php中计算程序运行时间的类代码
2012/11/03 PHP
php中ftp_chdir与ftp_cdup函数用法
2014/11/18 PHP
PHP将session信息存储到数据库的类实例
2015/03/04 PHP
使用PHP uniqid函数生成唯一ID
2015/11/18 PHP
JSQL SQLProxy 的 php 版本代码
2010/05/05 Javascript
javascript预览上传图片发现的问题的解决方法
2010/11/25 Javascript
js页面跳转的问题(跳转到父页面、最外层页面、本页面)
2013/08/14 Javascript
浏览器图片选择预览、旋转、批量上传的JS代码实现
2013/12/04 Javascript
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
JS实现先显示大图后自动收起显示小图的广告代码
2015/09/04 Javascript
js实现的后台左侧管理菜单代码
2015/09/11 Javascript
分享JavaScript与Java中MD5使用两个例子
2015/12/23 Javascript
JS回调函数基本定义与用法实例分析
2017/05/24 Javascript
Vuex 进阶之模块化组织详解
2018/01/12 Javascript
前端MVVM框架解析之双向绑定
2018/01/24 Javascript
React组件重构之嵌套+继承及高阶组件详解
2018/07/19 Javascript
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
vue实现一拉到底的滑动验证
2019/07/25 Javascript
vue使用高德地图根据坐标定位点的实现代码
2019/08/22 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
2020/03/03 Javascript
js 获取扫码枪输入数据的方法
2020/06/10 Javascript
vue实现移动端返回顶部
2020/10/12 Javascript
[01:01:52]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第二场 1月9日
2021/03/11 DOTA
Python基于opencv的图像压缩算法实例分析
2018/05/03 Python
TensorFlow 模型载入方法汇总(小结)
2018/06/19 Python
python os.path模块常用方法实例详解
2018/09/16 Python
django 2.2和mysql使用的常见问题
2019/07/18 Python
python selenium实现发送带附件的邮件代码实例
2019/12/10 Python
python requests库的使用
2021/01/06 Python
Flask中jinja2的继承实现方法及实例
2021/03/03 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的示例代码
2021/02/24 HTML / CSS
HTML5+Canvas+CSS3实现齐天大圣孙悟空腾云驾雾效果
2016/04/26 HTML / CSS
HTML5 背景的显示区域实现
2020/07/09 HTML / CSS
报告会主持词
2014/04/02 职场文书
听课评语大全
2014/04/30 职场文书