平行坐标图简介

当数据的维度超过三维时,此时数据的可视化就变得不再那么简单。为解决高维数据的可视化问题,我们可以使用平行坐标图。以下关于平行坐标图的解释引自百度百科:为了克服传统的笛卡尔直角坐标系容易耗尽空间、 难以表达三维以上数据的问题, 平行坐标图将高维数据的各个变量用一系列相互平行的坐标轴表示, 变量值对应轴上位置。为了反映变化趋势和各个变量间相互关系,往往将描述不同变量的各点连接成折线。所以平行坐标图的实质是将m维欧式空间的一个点Xi(xi1,xi2,...,xim) 映射到二维平面上的一条曲线。在N条平行的线的背景下,(一般这N条线都竖直且等距),一个在高维空间的点可以被表示为一条拐点在N条平行坐标轴的折线,在第K个坐标轴上的位置就表示这个点在第K个维的值。

绘制平行坐标图

本文主要介绍两种利用Python绘制平行坐标图的方法,分别是利用pandas包绘制和利用plotly包绘制(默认已安装pandas包和plotly包)。

利用pandas实现平行坐标图的绘制

import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
from pandas.plotting import parallel_coordinatesdata = sns.load_dataset('iris')fig,axes = plt.subplots()
parallel_coordinates(data,'species',ax=axes)
fig.savefig('parallel.png')

绘制的平行坐标图如下所示:

从上图可以看到x轴上变量共用一个y坐标轴,此时因sepal_length、sepal_width、petal_length以及petal_width这四个变量的值得范围相近,利用这种方式作出的共用y轴的平行坐标图有着很好的可视化效果;但假如sepal_length、sepal_width、petal_length以及petal_width这些变量的值的范围相差较大时,这种共用y轴的平行坐标图就不再适用,此时我们需要的是y轴独立的平行坐标图。下面介绍的另一种方法实现的就是y轴独立的平行坐标图。

利用plotly实现平行坐标图的绘制

plotly绘图有两种模式,一种是online模式,另一种是offline模式。本文使用的是offline模式,且是在jupyter notebook中进行绘图。

首先熟悉一下plotly的绘图方式:

import plotly as py
import plotly.graph_objs as go
py.offline.init_notebook_mode(connected=True)   # 初始化设置py.offline.iplot({"data": [go.Parcoords(line = dict(color = 'blue'),dimensions = list([dict(range = [1,5],constraintrange = [1,2],label = 'A', values = [1,4]),dict(range = [1.5,5],tickvals = [1.5,3,4.5],label = 'B', values = [3,1.5]),dict(range = [1,5],tickvals = [1,2,4,5],label = 'C', values = [2,4],ticktext = ['text 1', 'text 2', 'text 3', 'text 4']),dict(range = [1,5],label = 'D', values = [4,2])]))],"layout": go.Layout(title="My first parallel coordinates")
})

绘制图形如下所示:

绘制鸢尾花数据的平行坐标图:

df = sns.load_dataset('iris')
df['species_id'] = df['species'].map({'setosa':1,'versicolor':2,'virginica':3})  #用于颜色映射py.offline.iplot({"data": [go.Parcoords(line = dict(color = df['species_id'],colorscale = [[0,'#D7C16B'],[0.5,'#23D8C3'],[1,'#F3F10F']]),dimensions = list([dict(range = [2,8],constraintrange = [4,8],label = 'Sepal Length', values = df['sepal_length']),dict(range = [1,6],label = 'Sepal Width', values = df['sepal_width']),dict(range = [0,8],label = 'Petal Length', values = df['petal_length']),dict(range = [0,4],label = 'Petal Width', values = df['petal_width'])]))],"layout": go.Layout(title='Iris parallel coordinates plot')
})

绘制的图形如下所示:

注:关于plotly.offline.iplot、go.Parcoords以及go.Layout的用法可以利用help关键字查看相关帮助文档,与pyecharts不同,plotly提供的帮助文档非常详细。

参考:

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.plotting.parallel_coordinates.html?highlight=parallel_coordinates#pandas.plotting.parallel_coordinates

https://plot.ly/python/parallel-coordinates-plot/

https://plot.ly/python/getting-started/#start-plotting-online

https://baike.baidu.com/item/%E5%B9%B3%E8%A1%8C%E5%9D%90%E6%A0%87%E5%9B%BE/7430642

Python实现平行坐标图的绘制(plotly)相关推荐

  1. python绘制花朵图案_Python实现平行坐标图的绘制(plotly)方式

    平行坐标图简介 当数据的维度超过三维时,此时数据的可视化就变得不再那么简单.为解决高维数据的可视化问题,我们可以使用平行坐标图.以下关于平行坐标图的解释引自百度百科:为了克服传统的笛卡尔直角坐标系容易 ...

  2. python画平行坐标图_[宜配屋]听图阁

    平行坐标图,一种数据可视化的方式.以多个垂直平行的坐标轴表示多个维度,以维度上的刻度表示在该属性上对应值,相连而得的一个折线表示一个样本,以不同颜色区分类别. 但是很可惜,才疏学浅,没办法在Pytho ...

  3. python画平行坐标图_Python实现平行坐标图的两种方法小结

    怎么用python实现一个坐标图的平移和缩放最容易想到的应该是DP算法,即取初始轨迹的起点A和终点B连线,计算每个点到这条线的距离,距离最大的点C若小于要分享误差则结束: 否则将C点加入压缩后的数据集 ...

  4. Python 箱型图的绘制并提取特征值

    文章目录 一.简介 二.绘制与提取 1.图形绘制 2.ax.boxplot 函数的使用 3.特征值提取 三.多箱型图绘制 1.一种类型 2.多种类型 参考: https://blog.csdn.net ...

  5. Python实现平行坐标图的两种方式

    平行坐标图,一种数据可视化的方式.以多个垂直平行的坐标轴表示多个维度,以维度上的刻度表示在该属性上对应值,相连而得的一个折线表示一个样本,以不同颜色区分类别. 但是很可惜,才疏学浅,没办法在Pytho ...

  6. python生成热度图_Python 绘制热度图(seaborn)

    原博文 2020-05-08 15:16 − 进行数据处理时,对于数据的可视化展示可以更好的表现数据的关系 论文中,漂亮的热度图会让人眼前一亮 Seaborn 中的 heatmap就可以用来创建热度图 ...

  7. python matplotlib各种图的绘制(基础)

    Matplotlib是Python中最常用的可视化工具之一,可以非常方便地创建海量类型地2D图表和一些基本的3D图表,可根据数据集(DataFrame,Series)自行定义x,y轴,绘制图形(线形图 ...

  8. Python实现漏斗图的绘制

    说明:代码运行环境为 Win10+Python3+jupyter notebook 本文主要用到的是pyecharts包,所以要保证电脑上已经安装了pyecharts包. 漏斗图简介:     漏斗图 ...

  9. python画平行坐标图_Matplotlib中的平行坐标图

    使用传统的绘图类型可以相对直观地查看二维和三维数据.即使是四维数据,我们也经常能找到显示数据的方法.不过,4维以上的维度越来越难以显示.幸运的是,parallel coordinates plots提 ...

最新文章

  1. linux 内核 初始化失败,300分求内核初始化及启动中出现的问题,
  2. 珠海网络推广浅析网站优化面对搜索引擎算法更新怎样才能应对自如?
  3. ubuntu安装过程中遇到问题小结
  4. qt中实现息屏开平mousepress_QT信号槽分析
  5. Android-获取系统的应用程序的信息
  6. ABP理论之CSRF
  7. 仅需6道题轻松掌握Python异常捕获 | Python技能树征题
  8. 解决libcrypto.so.1.0.0 动态库找不到的问题
  9. cruzer php sandisk 闪迪u盘量产工具_SanDisk Cruzer CZ36闪迪U盘 怎么量产
  10. 微信小程序引入外部icon
  11. mp3排序软件哪个好用_电脑上有什么录音软件,哪个电脑录音软件好用
  12. 遥感图像空间分辨率获取
  13. Zabbix监控系统系列之九:监控网络设备指定接口流量
  14. 架构设计的深入思考与总结——概述
  15. 在UE4中创建新的Shading Model
  16. 软件工程 -- 状态转换图
  17. CV7 颜色追踪和图像阈值
  18. ubuntu服务器安装和配置FTP服务器以及权限管理
  19. wireshark以太网协议分析
  20. 利用html表单制作个人简历

热门文章

  1. linux brctl 网桥设置
  2. java项目时间不够怎么办_时间总是不够用怎么办?
  3. 潇洒塑胶模具设计培训学校注塑模具设计培训课堂小知识
  4. (转)Cannot resolve directory 'xxx'
  5. 瀑布式开发、迭代开发、敏捷开发、XP与SCRUM的区别
  6. [2018]试卷: 网易2018校园招聘编程题真题集合
  7. Authing Share|密码:安全领域的基石
  8. tomcat访问项目去掉项目名
  9. U3D物体范围内随机运动
  10. SpringMVC---->自我实现底层机制(吃透springMVC)