我的公众号:早起Python
============
大家好,说起可视化图表,那么弦图(Chord Diagram)一定是颜值担当了,比如在今天这个特殊的日子我们通过使用百度迁徙数据来可视化展示武汉及其周边城市的迁徙数据

看上去是不是很酷炫,并且还支持交互,接下来我们就讲解如何使用Python制作这样一张弦图~
首先我们先简单介绍一下弦图,弦图主要用于展示多个对象之间的关系,连接圆上任意两点的线段叫做弦,弦(两点之间的连线)就代表着两者之间的关联关系。弦图虽然看起来有点眼花缭乱,但是它却非常适合用户分析复杂数据的关联关系。
在Python中制作弦图的方法有很多,比如Plotly、Bokeh都支持绘制弦图,但是我们要讲的则是一个专门制作弦图的库chord(chord就是弦的意思啦),因为这个库支持调整一些参数来让图变得更加好看,安装也很简单pip install chord就可以。
和之前的技术解析文章一样,首先我们需要确认一下自己的数据长啥样,我们直接使用Python取下百度迁徙数据下的武汉迁徙详情页相关数据

提取迁入武汉来源地并依次获得这五个来源地的迁入城市前五名即可,因此我们的数据长这样

接下来我们使用下面的代码计算一下每两个城市的联系矩阵
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)看下这个矩阵,因为一共涉及14个城市所以是一个14* 14的方阵

好了,我们需要的数据格式就是这样,现在一行代码即可生成好看的弦图
Chord(matrix, names, colors="d3.schemeSet2").to_html()这段代码我想不必过多解释,不就是把城市名和矩阵传进去,执行完之后你的工作目录下就会生成一个html文件,打开就是本文刚开始的弦图啦!当然我们还可以修改color参数来调整图的颜色与样式

以上就是如何使用Python制作酷炫的弦图教程,你学会了吗?简单来说就是将数据整理成它需要的格式传进去即可,更多的样式还需要你自己探索,快去试试吧。
原文地址:https://zhuanlan.zhihu.com/p/127134896 |