Python实现平行坐标图的两种方法小结


Posted in Python onJuly 04, 2019

平行坐标图,一种数据可视化的方式。以多个垂直平行的坐标轴表示多个维度,以维度上的刻度表示在该属性上对应值,相连而得的一个折线表示一个样本,以不同颜色区分类别。

但是很可惜,才疏学浅,没办法在Python里实现不同颜色来区分不同的类别。如果对此比较在意的大神可以不要往下看了。。。。。。。。。

Python实现平行坐标图的两种方法小结

上图是一个基于iris数据集所画的一个平行坐标图。

隔开隔开.......................................隔开隔开

不多扯了,下面正式上代码

方法一、基于pyecharts第三方包来实现

from pyecharts import Parallel
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

data = pd.read_csv('iris.csv')
data_1 = np.array(data[['Sepal_length', 'Sepal_width', 'Petal_length', 'Petal_width']]).tolist()

schema = ['Sepal_length', 'Sepal_width', 'Petal_length', 'Petal_width']

parallel = Parallel('iris平行坐标图')
parallel.config(schema)
parallel.add('dasfd',data_1,is_random = True)
parallel

可惜,这样子run出来的恰好结果就是上图,没办法实现不同类别用不同颜色来区分。实在不得不说是一个令人超级不爽的一个地方,劳资都想咋了电脑当时,哈哈哈哈。。。

在这里多扯两句啊,pyecharts这个包还真的是特么的好用啊,各种图都能实现,感兴趣的朋友不妨装个来耍耍

方法二、基于pandas来实现

what?pandas?这把绝世好剑不是用来处理一些数据的吗?什么时候还具有画图的功能了,lz你没猫饼吧?

说实话,lz当时也没想到pandas能用来画图,而且是画平行坐标图。下面就是代码了:

import matplotlib.pyplot as plt
import pandas as pd
from pandas.tools.plotting import parallel_coordinates

data = pd.read_csv('iris.csv')
data_1 =data[['Species','Sepal_length', 'Sepal_width', 'Petal_length', 'Petal_width']]

parallel_coordinates(data_1,'Species')
plt.legend(loc='upper center', bbox_to_anchor=(0.5,-0.1),ncol=3,fancybox=True,shadow=True)
plt.show()

run一下,就可以得到下图了

Python实现平行坐标图的两种方法小结

不难看出,这张图是具有了不同颜色,但是每个坐标轴的刻度都是0-8啊,lz希望的是每个轴独立的啊·········

以上就是我探讨在Python里如何实现平行坐标图所得到的一些结果吧。两种方式都没办法很完美的实现我们的需求(轴独立、颜色区别)。正所谓活到老,学到老。各位大神如果有可以实现的方式,可以教教小弟,小弟不胜感激!

虽然lz没办法在Python里画出满意的平行坐标图,但是最后也用Echarts实现了一下(哈哈,有时候没办法了,不妨试试换个工具)

Python实现平行坐标图的两种方法小结

顺道附上代码吧,不然担心被人画小圈圈

// Schema:
// date,AQIindex,PM2.5,PM10,CO,NO2,SO2
var data1 = [[5.1, 3.5, 1.4, 0.2], [4.9, 3.0, 1.4, 0.2], [4.7, 3.2, 1.3, 0.2], [4.6, 3.1, 1.5, 0.2], [5.0, 3.6, 1.4, 0.2], [5.4, 3.9, 1.7, 0.4], [4.6, 3.4, 1.4, 0.3], [5.0, 3.4, 1.5, 0.2], [4.4, 2.9, 1.4, 0.2], [4.9, 3.1, 1.5, 0.1], [5.4, 3.7, 1.5, 0.2], [4.8, 3.4, 1.6, 0.2], [4.8, 3.0, 1.4, 0.1], [4.3, 3.0, 1.1, 0.1], [5.8, 4.0, 1.2, 0.2], [5.7, 4.4, 1.5, 0.4], [5.4, 3.9, 1.3, 0.4], [5.1, 3.5, 1.4, 0.3], [5.7, 3.8, 1.7, 0.3], [5.1, 3.8, 1.5, 0.3], [5.4, 3.4, 1.7, 0.2], [5.1, 3.7, 1.5, 0.4], [4.6, 3.6, 1.0, 0.2], [5.1, 3.3, 1.7, 0.5], [4.8, 3.4, 1.9, 0.2], [5.0, 3.0, 1.6, 0.2], [5.0, 3.4, 1.6, 0.4], [5.2, 3.5, 1.5, 0.2], [5.2, 3.4, 1.4, 0.2], [4.7, 3.2, 1.6, 0.2], [4.8, 3.1, 1.6, 0.2], [5.4, 3.4, 1.5, 0.4], [5.2, 4.1, 1.5, 0.1], [5.5, 4.2, 1.4, 0.2], [4.9, 3.1, 1.5, 0.1], [5.0, 3.2, 1.2, 0.2], [5.5, 3.5, 1.3, 0.2], [4.9, 3.1, 1.5, 0.1], [4.4, 3.0, 1.3, 0.2], [5.1, 3.4, 1.5, 0.2], [5.0, 3.5, 1.3, 0.3], [4.5, 2.3, 1.3, 0.3], [4.4, 3.2, 1.3, 0.2], [5.0, 3.5, 1.6, 0.6], [5.1, 3.8, 1.9, 0.4], [4.8, 3.0, 1.4, 0.3], [5.1, 3.8, 1.6, 0.2], [4.6, 3.2, 1.4, 0.2], [5.3, 3.7, 1.5, 0.2], [5.0, 3.3, 1.4, 0.2]
];
var data2 = [[7.0, 3.2, 4.7, 1.4], [6.4, 3.2, 4.5, 1.5], [6.9, 3.1, 4.9, 1.5], [5.5, 2.3, 4.0, 1.3], [6.5, 2.8, 4.6, 1.5], [5.7, 2.8, 4.5, 1.3], [6.3, 3.3, 4.7, 1.6], [4.9, 2.4, 3.3, 1.0], [6.6, 2.9, 4.6, 1.3], [5.2, 2.7, 3.9, 1.4], [5.0, 2.0, 3.5, 1.0], [5.9, 3.0, 4.2, 1.5], [6.0, 2.2, 4.0, 1.0], [6.1, 2.9, 4.7, 1.4], [5.6, 2.9, 3.6, 1.3], [6.7, 3.1, 4.4, 1.4], [5.6, 3.0, 4.5, 1.5], [5.8, 2.7, 4.1, 1.0], [6.2, 2.2, 4.5, 1.5], [5.6, 2.5, 3.9, 1.1], [5.9, 3.2, 4.8, 1.8], [6.1, 2.8, 4.0, 1.3], [6.3, 2.5, 4.9, 1.5], [6.1, 2.8, 4.7, 1.2], [6.4, 2.9, 4.3, 1.3], [6.6, 3.0, 4.4, 1.4], [6.8, 2.8, 4.8, 1.4], [6.7, 3.0, 5.0, 1.7], [6.0, 2.9, 4.5, 1.5], [5.7, 2.6, 3.5, 1.0], [5.5, 2.4, 3.8, 1.1], [5.5, 2.4, 3.7, 1.0], [5.8, 2.7, 3.9, 1.2], [6.0, 2.7, 5.1, 1.6], [5.4, 3.0, 4.5, 1.5], [6.0, 3.4, 4.5, 1.6], [6.7, 3.1, 4.7, 1.5], [6.3, 2.3, 4.4, 1.3], [5.6, 3.0, 4.1, 1.3], [5.5, 2.5, 4.0, 1.3], [5.5, 2.6, 4.4, 1.2], [6.1, 3.0, 4.6, 1.4], [5.8, 2.6, 4.0, 1.2], [5.0, 2.3, 3.3, 1.0], [5.6, 2.7, 4.2, 1.3], [5.7, 3.0, 4.2, 1.2], [5.7, 2.9, 4.2, 1.3], [6.2, 2.9, 4.3, 1.3], [5.1, 2.5, 3.0, 1.1], [5.7, 2.8, 4.1, 1.3]
];
var data3 = [[6.3, 3.3, 6.0, 2.5], [5.8, 2.7, 5.1, 1.9], [7.1, 3.0, 5.9, 2.1], [6.3, 2.9, 5.6, 1.8], [6.5, 3.0, 5.8, 2.2], [7.6, 3.0, 6.6, 2.1], [4.9, 2.5, 4.5, 1.7], [7.3, 2.9, 6.3, 1.8], [6.7, 2.5, 5.8, 1.8], [7.2, 3.6, 6.1, 2.5], [6.5, 3.2, 5.1, 2.0], [6.4, 2.7, 5.3, 1.9], [6.8, 3.0, 5.5, 2.1], [5.7, 2.5, 5.0, 2.0], [5.8, 2.8, 5.1, 2.4], [6.4, 3.2, 5.3, 2.3], [6.5, 3.0, 5.5, 1.8], [7.7, 3.8, 6.7, 2.2], [7.7, 2.6, 6.9, 2.3], [6.0, 2.2, 5.0, 1.5], [6.9, 3.2, 5.7, 2.3], [5.6, 2.8, 4.9, 2.0], [7.7, 2.8, 6.7, 2.0], [6.3, 2.7, 4.9, 1.8], [6.7, 3.3, 5.7, 2.1], [7.2, 3.2, 6.0, 1.8], [6.2, 2.8, 4.8, 1.8], [6.1, 3.0, 4.9, 1.8], [6.4, 2.8, 5.6, 2.1], [7.2, 3.0, 5.8, 1.6], [7.4, 2.8, 6.1, 1.9], [7.9, 3.8, 6.4, 2.0], [6.4, 2.8, 5.6, 2.2], [6.3, 2.8, 5.1, 1.5], [6.1, 2.6, 5.6, 1.4], [7.7, 3.0, 6.1, 2.3], [6.3, 3.4, 5.6, 2.4], [6.4, 3.1, 5.5, 1.8], [6.0, 3.0, 4.8, 1.8], [6.9, 3.1, 5.4, 2.1], [6.7, 3.1, 5.6, 2.4], [6.9, 3.1, 5.1, 2.3], [5.8, 2.7, 5.1, 1.9], [6.8, 3.2, 5.9, 2.3], [6.7, 3.3, 5.7, 2.5], [6.7, 3.0, 5.2, 2.3], [6.3, 2.5, 5.0, 1.9], [6.5, 3.0, 5.2, 2.0], [6.2, 3.4, 5.4, 2.3], [5.9, 3.0, 5.1, 1.8]
];
var schema = [
  {name: 'Sepal_length', index: 0, text: 'Sepal_length'},
  {name: 'Sepal_width', index: 1, text: 'Sepal_width'},
  {name: 'Petal_length', index: 2, text: 'Petal_length'},
  {name: 'Petal_width', index: 3, text: 'Petal_width'},
];

var lineStyle = {
  normal: {
    width: 1,
    opacity: 0.5
  }
};

option = {
  legend: {
    top: 0,
    data:['Iris-setosa','Iris-versicolor','Iris-virginica'],
    itemGap: 10
  },
  parallelAxis: [
    {dim: 0, name: schema[0].text},
    {dim: 1, name: schema[1].text},
    {dim: 2, name: schema[2].text},
  ],
  parallel: {
    left: '5%',
    right: '13%',
    bottom: '10%',
    top: '15%',
    parallelAxisDefault: {
      type: 'value',
      name: '平行坐标',
      nameLocation: 'end',
      nameGap: 20,
      nameTextStyle: {
        fontSize: 12
      }
    }
  },
  series: [
    {
      name: 'Iris-setosa',
      type: 'parallel',
      lineStyle: lineStyle,
      data: data1
    },
    {
      name: 'Iris-versicolor',
      type: 'parallel',
      lineStyle: lineStyle,
      data: data2
    },
    {
      name: 'Iris-virginica',
      type: 'parallel',
      lineStyle: lineStyle,
      data: data3
    },
  ]  
};

打完收工,各位小兄dei,快点点赞啊,不然我胖虎用小拳拳锤死在座的各位,记住是全部。。。。。

以上这篇Python实现平行坐标图的两种方法小结就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
linux系统使用python监测网络接口获取网络的输入输出
Jan 15 Python
用python制作游戏外挂
Jan 04 Python
Python实现PS滤镜中马赛克效果示例
Jan 20 Python
python正则表达式面试题解答
Apr 28 Python
python实现求特征选择的信息增益
Dec 18 Python
Python中使用__new__实现单例模式并解析
Jun 25 Python
pandas DataFrame的修改方法(值、列、索引)
Aug 02 Python
django 文件上传功能的相关实例代码(简单易懂)
Jan 22 Python
通俗易懂了解Python装饰器原理
Sep 17 Python
Django解决frame拒绝问题的方法
Dec 18 Python
Python中常见的反爬机制及其破解方法总结
Jun 10 Python
用Python将GIF动图分解成多张静态图片
Jun 11 Python
Python 图像处理: 生成二维高斯分布蒙版的实例
Jul 04 #Python
Django实现微信小程序的登录验证功能并维护登录态
Jul 04 #Python
libreoffice python 操作word及excel文档的方法
Jul 04 #Python
Python实现12306火车票抢票系统
Jul 04 #Python
如何利用Pyecharts可视化微信好友
Jul 04 #Python
python 获取等间隔的数组实例
Jul 04 #Python
python 中pyqt5 树节点点击实现多窗口切换问题
Jul 04 #Python
You might like
用php实现百度网盘图片直链的代码分享
2012/11/01 PHP
PHP文件上传主要代码讲解
2013/09/30 PHP
Yii结合CKEditor实现图片上传功能
2014/06/13 PHP
PHP文件缓存类示例分享
2015/01/30 PHP
PHP文件操作之获取目录下文件与计算相对路径的方法
2016/01/08 PHP
浅谈laravel中的关联查询with的问题
2019/10/10 PHP
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
jquery动态更换设置背景图的方法
2014/03/25 Javascript
javascript通过获取html标签属性class实现多选项卡的方法
2015/07/27 Javascript
JavaScript实现文字跟随鼠标特效
2015/08/06 Javascript
深入理解javascript中concat方法
2016/12/12 Javascript
微信小程序 引用其他js文件实现代码
2017/02/22 Javascript
JS实现table表格固定表头且表头随横向滚动而滚动
2017/10/26 Javascript
通过webpack引入第三方库的方法
2018/07/20 Javascript
一步一步的了解webpack4的splitChunk插件(小结)
2018/09/17 Javascript
vue中导出Excel表格的实现代码
2018/10/18 Javascript
uni-app之APP和小程序微信授权方法
2019/05/09 Javascript
layui实现数据表格table分页功能(ajax异步)
2019/07/27 Javascript
python中sleep函数用法实例分析
2015/04/29 Python
详解windows python3.7安装numpy问题的解决方法
2018/08/13 Python
Python中三维坐标空间绘制的实现
2020/09/22 Python
html5 学习简单的拾色器
2010/09/03 HTML / CSS
澳大利亚Rockwear官网:女子瑜伽、健身和运动服
2021/01/26 全球购物
Does C# support multiple inheritance? (C#支持多重继承吗)
2012/01/04 面试题
大学生入党思想汇报
2014/01/01 职场文书
企业厂务公开实施方案
2014/03/26 职场文书
手术室护士节演讲稿
2014/08/27 职场文书
张家口市高新区党工委群众路线教育实践活动整改方案
2014/10/25 职场文书
英文感谢信范文
2015/01/21 职场文书
综合素质评价思想道德自我评价
2015/03/09 职场文书
幼儿园教师工作总结2015
2015/04/02 职场文书
小学工作总结2015
2015/05/04 职场文书
道歉短信大全
2015/05/12 职场文书
2015年房地产个人工作总结
2015/05/26 职场文书
上帝为你开了一扇窗之Tkinter常用函数详解
2021/06/02 Python
Oracle中update和select 关联操作
2022/01/18 Oracle