python 桑基图_3行代码基于python的matplotlib绘制桑基图
背景
桑基图作为1种表达数据流动方向的可视化方式,在商业数据分析,地理可视化,生物医学领域有着广泛应用。比如:在基因组学领域,有研究利用桑基图来表示生物分子之间的调控关系。
目前多数桑基图软件包(如plotly等)大多数调用了d3.js,它允许提供一些可交互操作,但安装和使用的参数设定有一定不便利。
matplotlib是python内最为流行的一个可视化库,提供大量的操作接口,其绘制的图片可以达到文章发表级别,美观程度不亚于ggplot2。然而,matplotlib并没有提供一些高级绘图函数接口,需要用户对matplotlib非常熟悉才能绘制出定制化程度高的图。
一些高级封装库,如:Seaborn封装了matplotlib,有助于降低用户使用难度,绘制高级的图片,且允许用户后期调用matplotlib api自由修改。但seaborn依然没有桑基图绘制。
介于此,本人基于matplotlib开发了一个简单的桑基图绘制程序pysankey2,它能够绘制多层桑基图,并允许用户自由的设定一些参数,熟悉matplotlib也可以后期进行修图。
下面介绍如何利用pysankey2来绘制桑基图。
安装
下载后,打开操作系统的命令行界面,cd到存放该压缩包的目录,然后利用pip就能完成安装:
cd path/to/your/directory
pip install pysankey2-0.1.0.zip
3行代码绘制一个2层桑基图
我们基于内置的数据集进行快速绘制:
from pysankey2.datasets import load_fruits
df = load_fruits()
df.head()
image.png
可以看到,内置数据集的每一行代表一个连接对。有几个连接对,就有几行。实际上,这也是pysankey2的输入要求。
import matplotlib.pyplot as plt
import pandas as pd
from pysankey2 import Sankey
## colorMode="global"表示设置箱子的颜色是全局一致的。
## 例如:Orange无论在第几层,都使用同样的颜色
sky = Sankey(df,colorMode="global")
fig,ax = sky.plot()
image.png
当然,字体好像有点小,颜色也不是很好看。我们进行一下微调,颜色更改为Paste1配色,并且利用stripColor="left"把桑基条带的颜色设置为和左边的箱子一样,同时把字体调大一点:
import matplotlib.pyplot as plt
import pandas as pd
from pysankey2.datasets import load_fruits
from pysankey2.utils import setColorConf
from pysankey2 import Sankey
df = load_fruits()
fruits = list(set(df.layer1).union(set(df.layer2)))
# Specified the colors.
# Here, we use 'Pastel1' colormaps(a shy but fresh palette:)).
# See matplotlib cmap for more colormaps:
# https://matplotlib.org/3.1.0/tutorials/colors/colormaps.html
colors = setColorConf(len(fruits),colors='Pastel1')
cls_map = dict(zip(fruits,colors))
# set stripColor="left"
sky = Sankey(df,colorDict=cls_map,colorMode="global",stripColor='left')
# set a bigger font size
fig,ax = sky.plot(text_kws={'size':20})
image.png
是不是好看多了~算下来一共也就6行代码。
绘制一个3层桑基图
df = load_countrys()
sky_auto_global_colors = Sankey(df,colorMode="global")
fig,ax = sky_auto_global_colors.plot(text_kws={'size':15})
效果如下:
image.png
其他参数
如果有任何疑问,可以直接到github页面提issue或者邮件联系szjshuffle@foxmail.com 。
python 桑基图_3行代码基于python的matplotlib绘制桑基图相关推荐
- 用python画动态三维轨迹_Python学习(一) —— matplotlib绘制三维轨迹图
在研究SLAM时常常需要对其输出的位姿进行复现以检测算法效果,在ubuntu系统中使用Python可以很好的完成相关的工作. 一. Ubuntu下Python的使用 在Ubuntu下使用Python有 ...
- python数据分析图表展示_1行代码实现Python数据分析:图表美观清晰,自带对比功能丨开源...
公众号关注 "视学算法" 设为 "星标",DLCV消息即可送达! 萧箫 发自 凹非寺 转自 | 量子位 你是否也在朋友圈看过这样的小广告: 「你要悄悄学Pyth ...
- python推荐系统-不到40行代码用Python实现一个简单的推荐系统
什么是推荐系统 维基百科这样解释道:推荐系统属于资讯过滤的一种应用.推荐系统能够将可能受喜好的资讯或实物(例如:电影.电视节目.音乐.书籍.新闻.图片.网页)推荐给使用者. 本质上是根据用户的一些行为 ...
- python绘制曲面图_Python:有没有办法用Matplotlib绘制“部分”曲面图?
编辑:请看tom10的答案.他的解决方案是将排除部分的值设置为np.南斯. 在 matplotlib的plot_surface似乎不接受np.南斯作为坐标,这样也行不通.如果我正确地理解了您的问题,那 ...
- 4行代码,Python解决美图秀秀
我们平时使用一些图像处理软件时,经常会看到其对图像的亮度.对比度.色度或者锐度进行调整.你是不是觉得这种技术的底层实现很高大上? 其实最基础的实现原理,用 Python 实现只需要几行代码,学会后你也 ...
- python编程小游戏代码-Python小游戏之300行代码实现俄罗斯方块
前言 本文代码基于 python3.6 和 pygame1.9.4. 俄罗斯方块是儿时最经典的游戏之一,刚开始接触 pygame 的时候就想写一个俄罗斯方块.但是想到旋转,停靠,消除等操作,感觉好像很 ...
- python小游戏源码-Python小游戏之300行代码实现俄罗斯方块
Python小游戏之300行代码实现俄罗斯方块 来源:中文源码网 浏览: 次 日期:2019年11月5日 [下载文档: Python小游戏之300行代码实现俄罗斯方块.txt ] (友情提示:右键点上 ...
- 用python画苹果的logo_简单几步,100行代码用Python画一个蝙蝠侠的logo
转自:菜鸟学Python 简单几步,100行代码用Python画一个蝙蝠侠的logo-1.jpg (35.33 KB, 下载次数: 0) 2020-7-30 12:04 上传 蝙蝠侠作为DC漫画的核心 ...
- c 语言500行小游戏代码,500行代码使用python写个微信小游戏飞机大战游戏.pdf
500行行代代码码使使用用python写写个个微微信信小小游游戏戏飞飞机机大大战战游游戏戏 这篇文章主要介绍了500行代码使用python写个微信小游戏飞机大战游戏,本文通过实例代码给大家介绍的非常详 ...
最新文章
- Revit结构2021-2022从零到精通
- oracle本地连接地址,关于Oracle本地连接出现与监听有关的问题的解决方法探讨,oracle本地连接...
- ISLR_Propotion
- RNA-Seq入门 如何跑通一个Rna-Seq流程
- 简历英文 计算机水平,计算机英文 简历
- 正则表达式基础知识及应用(用于个人学习以及回顾)
- 浏览器中java在什么位置,在基于浏览器的应用程序中保存JWT的位置以及如何使用它...
- SpaceVim 语言模块 lua
- LeetCode 94. 二叉树的中序遍历(中序遍历)
- JQuery实现radio、select、checkbox禁用
- python创意动态图片_Python趣味创意编程
- 证券交易4-PB系统简介
- 计算机病毒库更新记录表,计算机病毒库
- 计算机在酒店的应用ppt,计算机应用论文的专辑
- 面对tomatserver使用的webrequest
- Python制作个税计算器
- SSM 前台AJax传递参数和controller后台接收的方法
- 《Java工程师修炼之道》学习笔记
- git did not exit cleanly (exit code 128)已解决
- java打怪升级代码_1255: 打怪升级(Java)