前言

前几天写过使用networkx生成节点关系图,但是,生成图的图中节点的分布,始终是不如人意,没找到合适的布局图参考这里。后来发现可以使用echart来实现类似的目的,就尝试了一下,不断调整之后得到了比较满意的效果。

代码如下
import matplotlib.pyplot as plt
import networkx as nx
import pandas as pd
import math
from collections import Counterfrom pyecharts import options as opts
from pyecharts.charts import Graph
from pyecharts.globals import ThemeTypedata = pd.read_excel('./源数据.xlsx', keep_default_na=False)
counter_list = Counter()
ori_list = {}
import numpy as np
set_list = []
a, b = 0, 0
for x, y in zip(data['source'], data['target']):if x != '' and y != '':set_list += [x, y]if (x, y) not in ori_list:ori_list[(x, y)] = 1else:ori_list[(x, y)] += 1
print(a, b)
ori_list = sorted(ori_list.items(), key=lambda x: x[1], reverse=False)
data_list = []
for k in ori_list:data_list.append(list(k[0]) + [k[1]])length = 1
already_add_nodes = []
alread_add_edges = []
nodes_data = []
links_data = []
for k in data_list:for i in k[:2]:if i not in already_add_nodes:# 添加节点nodes_data.append(opts.GraphNode(name=str(i), symbol_size=15, value=str(i)))already_add_nodes.append(i)source, target, value = str(k[0]), str(k[1]), str(k[2])# 添加边if k[:2] not in alread_add_edges:if [k[1],k[0]] in alread_add_edges:# 神奇之处,curve=0.3,控制连线的扭曲度,一条线发生扭曲后,两条线就不重合了linestyle_opts=opts.LineStyleOpts(color="black",curve=0.5)label_opts = opts.LabelOpts(font_size=15, position="", color="black")else:linestyle_opts = opts.LineStyleOpts(color="black", curve=0.1)label_opts = opts.LabelOpts(font_size=15, position="", color="black")links_data.append(opts.GraphLink(source=source, target=target,value=value,linestyle_opts=linestyle_opts,label_opts=label_opts))alread_add_edges.append(k[:2])
init_opts = opts.InitOpts(width="2000px",  # 图宽height="1500px",  # 图高renderer="svg",  # 渲染模式 svg 或 canvas,即 RenderType.CANVAS 或 RenderType.SVGpage_title="节点关系图",  # 网页标题)
c = (Graph(init_opts).add("",nodes_data,links_data,repulsion=500,edge_symbol=[None, 'arrow'],edge_symbol_size=6,edge_label=opts.LabelOpts(is_show=True, position='middle', formatter="{c}"),).set_global_opts(title_opts=opts.TitleOpts(title="节点关系图")).render("2020-连接数大于等于"+str(length)+"节点关系图.html")
)
效果图

使用pyechart生成节点关系图相关推荐

  1. source insight怎么生成函数调用关系图?

    点击relation window 参考文章:Source Insight怎么生成函数调用关系图?

  2. mysql的表导出er关系图_使用Navicat生成ER关系图并导出的方法

    平时管理数据库一般都是用cmd命令提示符,或是IDEA Intellij自带的Data source,使用Navicat比较少.这段时间,由于要对前后端交互的数据结构进行设计,直接写文档联系多表时有些 ...

  3. navicat导出查询结果原理_使用Navicat生成ER关系图并导出

    平时管理数据库一般都是用cmd命令提示符,或是IDEA Intellij自带的Data source,使用Navicat比较少.这段时间,由于要对前后端交互的数据结构进行设计,直接写文档联系多表时有些 ...

  4. echarts绘制节点关系图

    echarts绘制节点关系图 HTML代码 <!DOCTYPE html> <html><head><meta charset="UTF-8&quo ...

  5. 超酷!!!成功使用doxygen+Graphviz+HtmlHelp 自动生成函数调用关系图

    使用Doxygen+Graphviz+HtmlHelp 生成函数调用关系图 在写这篇博客之前,首先感谢一下另外一篇博主的文章,Windows平台下Doxygen+GraphViz+HtmlHelp自动 ...

  6. Android Studio自动生成UML关系图的方法步骤

    本文主要介绍了Android Studio自动生成UML关系图,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.目录 安装Sketch It 安装"Pl ...

  7. 利用Pajek软件批量处理excel数据,批量生成网络关系图

    利用Pajek软件批量处理excel数据,批量生成网络关系图 Pajek软件大家想必都不陌生,但是我很陌生,因为我用它不是进行网络分析,而是用它来画关系图(类似网络图).但是Pajek软件手工操作时一 ...

  8. 使用Navicat12生成数据库关系图

    在Navicat12中生成ER关系图 1,数据库中表需要建立主外键关系,才能生成,这里示例开源项目若依的数据库 2,点击数据库,右键选择–>逆向数据库到模型 3,生成ER图,如下 4,点击其中某 ...

  9. gephi生成网络关系图_路网拓扑重建专题 (3) 网络图生成

    城市道路网建模 在获得基础路网之后,需要考虑道路交通网络的描述与表达问题.网络是将现实世界中的事物及其关系进行适当的抽象,构造成由节点和边按照一定规则组成的形式. 一个实体网络可以由有限个" ...

最新文章

  1. 顶尖程序员不同于常人的 5 个区别
  2. Postfix 配置参数速查
  3. 虚拟机centos7 识别不出网卡的解决方案
  4. html5 canvas 实现一个简单的叮当猫头部
  5. mysql sequence 关键字_mysql增加sequence功能
  6. 10.15 iptables filter表小案例10.16/10.17/10.18 iptables nat表应用
  7. 写模拟挂用什么工具?
  8. Kendo UI开发教程(9): Kendo UI Validator 概述
  9. Android 系统(94)---android系统属性(ro.com.google.clientidbase.ms)随卡适配
  10. docker镜像与容器操作流程
  11. [转载] python 运算符重载有什么用_Python运算符重载用法实例分析
  12. 使用Configuration Manager部署及管理软件更新(1)
  13. VirtualBox安装的Mac虚拟机,安装增强功能失败,应该是版本太新
  14. 付费率第一 亏损显著收窄 网易云音乐将实现盈利?
  15. 学科竞赛管理系统服务器错误,学科竞赛管理系统.docx
  16. 原则读书法:书这么多,读完就忘怎么办
  17. MT7621AT,MT7620A,WIFI6,MT7975D+MT7915DAN
  18. js 计算个人所得税
  19. 40V转5V,40V转3.3V,40V转3V降压芯片和LDO芯片选型表
  20. Matlab——报错解决:Robotics Toolbox使用plot()或者teach()机器人报错:索引超出数组元素的数目(4)

热门文章

  1. 一文助您轻松上手 Kyligence Zen,轻松变身数据达人
  2. 我写了一套SpringBoot微信小程序电商全栈就业实战课程,免费分享给CSDN的朋友们
  3. 3D模型欣赏:眼球 眼睛 写实
  4. mysql replication 监控_MySQL之-Replication监控及自动故障切换的详细分析
  5. mysql基本数据类型、笔试题(2018-9-10)
  6. mysql的索引结构
  7. cost的导函数_几种常见函数的导数
  8. 介绍一个成功的 Git 分支模型
  9. cf12月9日服务器维护时间,cf12月9、10日全区全服维护更新公告_穿越火线更新公告_7k7k穿越火线...
  10. 《数学建模算法与应用第二版》——chapter3. 非线性规划