立即注册找回密码

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

手机动态码快速登录

手机号快速注册登录

搜索

图文播报

查看: 1234|回复: 0

[分享] 超好看的弦图,Python一行代码就能做

[复制链接]
发表于 2024-10-2 08:58 | 显示全部楼层 |阅读模式

登陆有奖并可浏览互动!

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录 手机动态码快速登录

×
我的公众号:早起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
楼主热帖
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册 微信登录 手机动态码快速登录

本版积分规则

关闭

官方推荐 上一条 /3 下一条

快速回复 返回列表 客服中心 搜索 官方QQ群 洽谈合作
快速回复返回顶部 返回列表