1、和弦图简介
和弦图(chord Diagram),是一种显示矩阵中数据间相互关系的可视化方法,节点数据沿圆周径向排列,节点之间使用带权重(有宽度)的弧线链接。
1.1、和弦图构成
图表类型 | 和弦图 |
---|---|
适合的数据 | 节点数据集(可选),边数据集 |
功能 | 观察节点关系 |
数据与图形的映射 | 权重映射到节点和边的宽度 |
适合的数据条数 | 节点数据两组以上 |
1.2、和弦图应用场景
和弦图用于探索实体组之间的关系
- 例子1:展示层次结构中的依赖关系
例如在软件类层次结构中的类存在复杂的依赖关系,根据源和目标包进行分组,然后根据依赖的程度使用带宽度的边连接具有依赖关系的节点,下图每个节点表示一个独立的包,每条边展示了包与包之间的依赖关系,每个节点上边的数量展示了当前包依赖的目标包的数量,边的初始宽度展示了当前包的类依赖目标包的类的数量,边的结束宽度展示了目标包的类依赖当前包的类的数量,也就是说,当一条边的结束宽度不为0时,表示包之间有循环依赖,在图表中表现为节点上连接了颜色与节点不同的边,例如图中左下角的 vis.data 与 vis.event。
- 例2:展示同级实体之间的流通关系
下图展示了某个时段用户使用uber软件在美国旧金山各个城市之间乘车交通的情况,图中的节点表示城市,节点大小表示了交通流量的多少,从图中可以看出,交通行为主要发生在SoMa、Downtown、Financial District、Mission、Marina和Western Addition六个城市。边连接了有交通行为的两个城市,节点上边的条数表示与当前城市有交通行为的城市的数量,边的初始宽度表示从当前城市到目标城市的流通量,边的结束宽度表示从目标城市到当前城市的流通量,从图中可以看出,从 SoMa到Financial District的流量最大
2、和弦图Python库
- Plotly
- Bokeh
- chord——一个专门制作弦图的库
3、chord的安装及使用
- 安装:cmd窗口输入
pip install chord
进行安装 - 准备数据:
- 计算联系矩阵
import numpy as np
import pandas as pd
import itertools
from chord import Chord
data = list(itertools.chain.from_iterable((i, i[::-1]) for i in data.values))
matrix = pd.pivot_table(
pd.DataFrame(data), index=0, columns=1, aggfunc="size", fill_value=0
).values.tolist()
pd.DataFrame(matrix)
4. 一行代码生成和弦图:
Chord(matrix, names, colors="d3.schemeSet2").to_html()
把城市名和矩阵传进去,执行完之后你的工作目录下就会生成一个html文件,打开就是本文刚开始的弦图啦!当然我们还可以修改color参数来调整图的颜色与样式
参考:https://mp.weixin.qq.com/s/6XqXd6JziTy9WULPAoU-Yg;
http://antv-2018.alipay.com/zh-cn/vis/chart/chord.html