温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python实现平行坐标图的方法有哪些

发布时间:2021-04-07 09:57:38 阅读:315 作者:小新 栏目:开发技术

这篇文章给大家分享的是有关Python实现平行坐标图的方法有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

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

但是很可惜,才疏学浅,没办法在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.13.51.40.2], [4.93.01.40.2], [4.73.21.30.2], [4.63.11.50.2], [5.03.61.40.2], [5.43.91.70.4], [4.63.41.40.3], [5.03.41.50.2], [4.42.91.40.2], [4.93.11.50.1], [5.43.71.50.2], [4.83.41.60.2], [4.83.01.40.1], [4.33.01.10.1], [5.84.01.20.2], [5.74.41.50.4], [5.43.91.30.4], [5.13.51.40.3], [5.73.81.70.3], [5.13.81.50.3], [5.43.41.70.2], [5.13.71.50.4], [4.63.61.00.2], [5.13.31.70.5], [4.83.41.90.2], [5.03.01.60.2], [5.03.41.60.4], [5.23.51.50.2], [5.23.41.40.2], [4.73.21.60.2], [4.83.11.60.2], [5.43.41.50.4], [5.24.11.50.1], [5.54.21.40.2], [4.93.11.50.1], [5.03.21.20.2], [5.53.51.30.2], [4.93.11.50.1], [4.43.01.30.2], [5.13.41.50.2], [5.03.51.30.3], [4.52.31.30.3], [4.43.21.30.2], [5.03.51.60.6], [5.13.81.90.4], [4.83.01.40.3], [5.13.81.60.2], [4.63.21.40.2], [5.33.71.50.2], [5.03.31.40.2]
];
var data2 = [[7.03.24.71.4], [6.43.24.51.5], [6.93.14.91.5], [5.52.34.01.3], [6.52.84.61.5], [5.72.84.51.3], [6.33.34.71.6], [4.92.43.31.0], [6.62.94.61.3], [5.22.73.91.4], [5.02.03.51.0], [5.93.04.21.5], [6.02.24.01.0], [6.12.94.71.4], [5.62.93.61.3], [6.73.14.41.4], [5.63.04.51.5], [5.82.74.11.0], [6.22.24.51.5], [5.62.53.91.1], [5.93.24.81.8], [6.12.84.01.3], [6.32.54.91.5], [6.12.84.71.2], [6.42.94.31.3], [6.63.04.41.4], [6.82.84.81.4], [6.73.05.01.7], [6.02.94.51.5], [5.72.63.51.0], [5.52.43.81.1], [5.52.43.71.0], [5.82.73.91.2], [6.02.75.11.6], [5.43.04.51.5], [6.03.44.51.6], [6.73.14.71.5], [6.32.34.41.3], [5.63.04.11.3], [5.52.54.01.3], [5.52.64.41.2], [6.13.04.61.4], [5.82.64.01.2], [5.02.33.31.0], [5.62.74.21.3], [5.73.04.21.2], [5.72.94.21.3], [6.22.94.31.3], [5.12.53.01.1], [5.72.84.11.3]
];
var data3 = [[6.33.36.02.5], [5.82.75.11.9], [7.13.05.92.1], [6.32.95.61.8], [6.53.05.82.2], [7.63.06.62.1], [4.92.54.51.7], [7.32.96.31.8], [6.72.55.81.8], [7.23.66.12.5], [6.53.25.12.0], [6.42.75.31.9], [6.83.05.52.1], [5.72.55.02.0], [5.82.85.12.4], [6.43.25.32.3], [6.53.05.51.8], [7.73.86.72.2], [7.72.66.92.3], [6.02.25.01.5], [6.93.25.72.3], [5.62.84.92.0], [7.72.86.72.0], [6.32.74.91.8], [6.73.35.72.1], [7.23.26.01.8], [6.22.84.81.8], [6.13.04.91.8], [6.42.85.62.1], [7.23.05.81.6], [7.42.86.11.9], [7.93.86.42.0], [6.42.85.62.2], [6.32.85.11.5], [6.12.65.61.4], [7.73.06.12.3], [6.33.45.62.4], [6.43.15.51.8], [6.03.04.81.8], [6.93.15.42.1], [6.73.15.62.4], [6.93.15.12.3], [5.82.75.11.9], [6.83.25.92.3], [6.73.35.72.5], [6.73.05.22.3], [6.32.55.01.9], [6.53.05.22.0], [6.23.45.42.3], [5.93.05.11.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
    },
  ]  
};

感谢各位的阅读!关于“Python实现平行坐标图的方法有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI