详解Python中四种关系图数据可视化的效果对比
作者:Sir 发布时间:2022-05-10 10:12:44
python关系图的可视化主要就是用来分析一堆数据中,每一条数据的节点之间的连接关系从而更好的分析出人物或其他场景中存在的关联关系。
这里使用的是networkx的python非标准库来测试效果展示,通过模拟出一组DataFrame数据实现四种关系图可视化。
其余还包含了pandas的数据分析模块以及matplotlib的画图模块。
若是没有安装这三个相关的非标准库使用pip的方式安装一下即可。
pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install networkx -i https://pypi.tuna.tsinghua.edu.cn/simple/
分别将使用到的python模块导入到我们的代码块中,就可以开始开发了。
# Importing the matplotlib.pyplot module as plt.
import matplotlib.pyplot as plt
# Importing the pandas module and giving it the alias pd.
import pandas as pd
这里为了避免中文乱码的情况,分别对字体和编码进行了统一化的设置处理。
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
# Importing the networkx module and giving it the alias nx.
import networkx as nx
这里我们采用了有向图的模式来进行演示,有向图也是在生产过程中最常用的一种可视化模式。
G = nx.DiGraph() # 创建有向图
初始化一个DataFrame数据对象作为关系图生成的数据来源。
data_frame = pd.DataFrame(
{
'A': ['1', '2', '3', '4', '5', '6'],
'B': ['a', 'b', 'c', 'd', 'e', 'f'],
'C': [1, 2, 3, 4, 5, 6]
}
)
1、随机分布模型
使用随机分布模型的生成规则时,生成的数据节点会采用随机的方式进行展示,生成的数据节点之间相对比较分散更容易观察数据节点之间的关系指向。
for i, row in data_frame.iterrows():
G.add_edge(row['A'], row['B'], weight=row['C'])
pos = nx.random_layout(G)
nx.draw(G, pos, with_labels=True, alpha=0.7)
labels = nx.get_edge_attributes(G, 'weight')
nx.draw_networkx_edge_labels(G, pos, edge_labels=labels)
plt.axis('equal')
plt.show()
通过matplotlib展示出图形效果如下,并且默认已经添加了数据权重。
2、放射数据模型
放射状数据模型,顾名思义就是以一个数据节点为中心向周边以发散状的模式进行分布,使用数据节点指向多个节点的可视化展示。
缺点是如果数据不够规范的情况下会展示成一团乱麻的情况,需要经过特殊的可视化处理。
使用方法这里直接将上述随机分布模型的pos模型直接替换成下面的放射状数据模型即可。
pos = nx.spring_layout(G, seed=4000, k=2)
3、其他模型
其余两种方式使用同样的方式将随机分布模型中pos模型进行替换即可实现,这里分别展示以下实现效果。
特征值向量模型
pos = nx.spectral_layout(G)
图形边缘化分布模型
pos = nx.shell_layout(G)
来源:https://mp.weixin.qq.com/s/mfVS8ikkSLEAfuDNSjtxtg


猜你喜欢
- 本文介绍了 setuptools 框架的内容,它是 PEAK 的一个副项目,它提供了比 distutils 更加简单的包管理和发行功能。开始
- kruskal算法基本思路:先对边按权重从小到大排序,先选取权重最小的一条边,如果该边的两个节点均为不同的分量,则加入到最小生成树,否则计算
- 目录1、如何按照字典的值的大小进行排序2、优雅的一次性判断多个条件3、如何优雅的合并两个字典1、如何按照字典的值的大小进行排序我们知道,字典
- 本文实例为大家分享了python实现发送邮件功能的具体代码,供大家参考,具体内容如下# -*- coding: utf-8 -*- # Au
- 这篇文章利用的是matplotlib.pyplot.plot的工具来绘制折线图,这里先给出一个段代码和结果图:# -*- coding: U
- 一. Python 的类和实例在面向对象中,最重要的概念就是类(class)和实例(instance),类是抽象的模板,而实例是根据类创建出
- Python编程中类的概念可以比作是某种类型集合的描述,如“人类”可以被看作一个类,然后用人类这个类定义出每个具体的人——你、我、他等作为其
- 就像我的日志中的地址路径一样,让 index.php?action=one&do=two 变成: ?
- migrate文件记录了每一次数据迁移的改变解决方法:重建数据库1.删除数据库错误方法:python manage.py shellfrom
- 任何数据库系统都无法避免崩溃的状况,即使你使用了Clustered,双机热备等等,仍然无法完全根除系统中的单点故障,何况对于大部分用户来说,
- 1、linux系统一般自带perl可运行程序在:/usr/bin/perl2、perl测试程序#!/usr/bin/perl -wuse w
- 初级第一次在linux下安装mysql-5.7.19版本教程,如果已经会安装了,那么请看下一篇linux下安装多个mysql-5.7.19环
- Hello every, 我是Sunrise_Chen,有人知道我吗?好久没来这里了,以前偶尔会来这里潜水今天心情很好,写了几个特效果。特效
- 动态生成二级菜单树:<script>jQuery(function($) {/**********获取未处理报警信息总数****
- 在python项目中,我们经常会用到lambda,那么lambda是什么呢,有什么作用,下面我们开始介绍1、可以使用lambda关键字创建匿
- 在python中enumerate的用法多用于在for循环中得到计数,本文即以实例形式向大家展现python中enumerate的用法。具体
- 本文记录了mysql 5.7.21 安装配置方法,分享给大家。1.下载安装包下面是官网windows系统的mysql下载地址Mysql下载地
- 注:本文是应Alan邀请为《CSS布局实录》写的一个web标准入门指导。书已经上市近一年了,现在摘选出来,给初学者一个参考。希望了解更多实现
- 在Windows平台下,如果想运行爬虫的话,就需要在cmd中输入:scrapy crawl spider_name这时,爬虫就能启动,并在控
- 问题tensor详细数值 不能直接print打印:import tensorflow as tfx = tf.constant(1)prin