使用pyecharts绘制关系网图
简介
关系网图是一种可视化工具,用于展示各个元素之间的关联关系。在数据分析和可视化中,关系网图通常用于展示网络、社交关系、知识图谱等方面的数据。Pyecharts 是一个功能强大的 Python 数据可视化库,可以轻松创建各种类型的图表,包括关系网图。本文将介绍如何使用 Pyecharts 绘制关系网图,并提供相关的示例。
关系图类基础配置
- 导包
在Pyecharts中,每一种图都有不同的类,关系图也不例外,创建关系网图需要使用 Graph
类。首先,我们需要导入相关的模块:
from pyecharts import options as opts
from pyecharts.charts import Graph
- add函数配置
我们在导入类之后,接下来就需要考虑对关系图进行具体的配置,add函数是我们对关系图进行配置的函数,我们可以使用不同的参数对关系图进行设置,通过查看源码,我们可以发现参数说明如下:
def add(self,series_name: str, # 系列名称nodes: types.Sequence[types.GraphNode], # 节点列表links: types.Sequence[types.GraphLink], # 连接列表categories: types.Union[types.Sequence[types.GraphCategory], None] = None, # 类别列表(可选)*,is_focusnode: bool = True, # 是否聚焦节点is_roam: bool = True, # 是否开启漫游is_draggable: bool = False, # 是否可拖拽is_rotate_label: bool = False, # 是否旋转标签layout: str = "force", # 布局方式,默认为力引导布局symbol: types.Optional[str] = None, # 节点图标(可选)symbol_size: types.Numeric = 10, # 节点图标大小edge_length: types.Numeric = 30, # 连接线长度gravity: types.Numeric = 0.2, # 节点间引力大小friction: types.Numeric = 0.6, # 节点间摩擦力大小is_layout_animation: bool = True, # 是否开启布局动画repulsion: types.Numeric = 50, # 节点间斥力大小edge_label: types.Label = None, # 连接线标签edge_symbol: types.Union[types.Sequence[str], str] = None, # 连接线图标edge_symbol_size: types.Numeric = 10, # 连接线图标大小label_opts: types.Label = opts.LabelOpts(), # 标签选项linestyle_opts: types.LineStyle = opts.LineStyleOpts(), # 连接线样式选项tooltip_opts: types.Tooltip = None, # 提示框选项itemstyle_opts: types.ItemStyle = None, # 图元样式选项)
绘制关系图
- 绘制简单关系图
下面是使用Pyecharts链式写法绘制普通的关系网络图的示例。代码如下:
from pyecharts import options as opts
from pyecharts.charts import Graph# 构建节点数据
nodes = [{"name": "A"},{"name": "B"},{"name": "C"},{"name": "D"},{"name": "E"},
]
# 构建边数据
links = [{"source": "A", "target": "B"},{"source": "B", "target": "C"},{"source": "C", "target": "D"},{"source": "D", "target": "E"},{"source": "E", "target": "A"},
]# 创建关系网络图对象
graph = (Graph().add("", nodes, links, repulsion=8000).set_global_opts(title_opts=opts.TitleOpts(title="简单关系网络图"))
)# 渲染图表
graph.render("graph.html")
运行代码后,生成的图像如下图所示:
- 复杂关系网络图
我们经常可以在电视剧的介绍中看到不同角色的人物关系图,其实pyecharts也可以绘制这样的复杂的人物关系图,示例代码如下:
from pyecharts import options as opts
from pyecharts.charts import Graph# 构建节点数据
nodes = [{"name": "配角1", "symbolSize": 10},{"name": "配角2", "symbolSize": 20},{"name": "主角3", "symbolSize": 30},{"name": "主角2", "symbolSize": 40},{"name": "核心人物", "symbolSize": 50},{"name": "主角1", "symbolSize": 40},{"name": "主角4", "symbolSize": 30},{"name": "配角3", "symbolSize": 20},
]# 构建边数据
links = []
for i in nodes:for j in nodes:links.append({"source": i.get("name"), "target": j.get("name")})# 创建关系网络图对象
graph = (Graph().add("", nodes, links, repulsion=8000).set_global_opts(title_opts=opts.TitleOpts(title="复杂关系网图"))
)# 生成html文件
graph.render("电视剧人物图.html")
运行代码,生成的图像如下:
总结
本文主要介绍了使用pyecharts来绘制关系网图的方法,关系网图对于我们在分析不同主体的任务关系是很有帮助的,希望本文可以帮助到大家。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!