怎么使用Python绘制惊艳的桑基图


本篇内容介绍了“怎么使用Python绘制惊艳的桑基图”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 很多时候,我们需要一种必须可视化数据如何在实体之间流动的情况。例如,以居民如何从一个国家迁移到另一个国家为例。这里演示了有多少居民从英格兰迁移到北爱尔兰、苏格兰和威尔士。从这个 桑基图 (Sankey)可视化中可以明显看出,从England迁移到Wales的居民多于从Scotland或Northern Ireland迁移的居民。桑基图通常描绘 从一个实体(或节点)到另一个实体(或节点)的数据流。数据流向的实体被称为节点,数据流起源的节点是源节点(例如左侧的England),流结束的节点是 目标节点(例如右侧的Wales)。源节点和目标节点通常表示为带有标签的矩形。流动本身由直线或曲线路径表示,称为链接。流/链接的宽度与流的量/数量成正比。在上面的例子中,从英格兰到威尔士的流动(即居民迁移)比从英格兰到苏格兰或北爱尔兰的流动(即居民迁移)更广泛(更多),表明迁移到威尔士的居民数量多于其他国家。桑基图可用于表示能量、金钱、成本的流动,以及任何具有流动概念的事物。米纳尔关于拿破仑入侵俄罗斯的经典图表可能是桑基图表最著名的例子。这种使用桑基图的可视化非常有效地显示了法国军队在前往俄罗斯和返回的途中是如何进步(或减少?)的。本文中,我们使用 python 的 plotly 绘制桑基图。本文使用 2021 年奥运会数据集绘制桑基图。该数据集包含有关奖牌总数的详细信息——国家、奖牌总数以及金牌、银牌和铜牌的单项总数。我们通过绘制一个桑基图来了解一个国家赢得的金牌、银牌和铜牌数。使用 plotly 的 go.Sankey,该方法带有2 个参数 ——nodes 和 links (节点和链接)。注意:所有节点——源和目标都应该有唯一的标识符。在本文奥林匹克奖牌数据集情况中:Source是国家。将前 3 个国家(美国、中国和日本)视为源节点。用以下(唯一的)标识符、标签和颜色来标记这些源节点:0:美国:绿色1:中国:蓝色2:日本:橙色Target是金牌、银牌或铜牌。用以下(唯一的)标识符、标签和颜色来标记这些目标节点:3:金牌:金色4:银牌:银色5:铜牌:棕色Link(源节点和目标节点之间)是每种类型奖牌的数量。在每个源中有3个链接,每个链接都以目标结尾——金牌、银牌和铜牌。所以总共有9个链接。每个环节的宽度应为金牌、银牌和铜牌的数量。用以下源标记这些链接到目标、值和颜色:0 (美国) 至 3,4,5 : 39, 41, 331 (中国) 至 3,4,5 : 38, 32, 182 (日本) 至 3,4,5 : 27, 14, 17需要实例化 2 个 python dict 对象来表示nodes (源和目标):标签和颜色作为单独的列表和links:源节点、目标节点、值(宽度)和链接的颜色作为单独的列表并将其传递给plotly的 go.Sankey。列表的每个索引(标签、源、目标、值和颜色)分别对应一个节点或链接。这是一个非常基本的桑基图。但是否注意到图表太宽并且银牌出现在金牌之前?接下来介绍如何调整节点的位置和宽度。为节点添加 x 和 y 位置以明确指定节点的位置。值应介于 0 和 1 之间。于是得到了一个紧凑的桑基图:下面看看代码中传递的各种参数如何映射到图中的节点和链接。代码如何映射到桑基图我们都知道plotly绘图是交互的,我们可以将鼠标悬停在节点和链接上以获取更多信息。带有默认悬停标签的桑基图当将鼠标悬停在图上,将会显示详细信息。悬停标签中显示的信息是默认文本:节免费云主机域名点、节点名称、传入流数、传出流数和总值。例如:节点美国共获得11枚奖牌(=39金+41银+33铜)节点金牌共有104枚奖牌(=美国39枚,中国38枚,日本27枚)如果我们觉得这些标签太冗长了,我们可以对此进程改进。使用hovertemplate参数改进悬停标签的格式对于节点,由于hoverlabels 没有提供新信息,通过传递一个空hovertemplate = “”来去掉hoverlabel对于链接,可以使标签简洁,格式为-对于节点和链接,让我们使用后缀”Medals”显示值。例如 113 枚奖牌而不是 113 枚。这可以通过使用具有适当valueformat和valuesuffix的update_traces函数来实现。带有改进的悬停标签的桑基图对多个节点和级别进行泛化相对于链接,节点被称为源和目标。作为一个链接目标的节点可以是另一个链接的源。该代码可以推广到处理数据集中的所有国家。还可以将图表扩展到另一个层次,以可视化各国的奖牌总数。“怎么使用Python绘制惊艳的桑基图”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注百云主机网站,小编将为大家输出更多高质量的实用文章!

相关推荐: Go语言zip文件的读写操作方法有哪些

这篇文章主要介绍“Go语言zip文件的读写操作方法有哪些”,在日常操作中,相信很多人在Go语言zip文件的读写操作方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go语言zip文件的读写操作方法有哪些”的疑惑有所帮助!接…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 06/28 21:24
Next 06/28 21:25

相关推荐