当前位置: 首页 > news >正文

软件测试|Python数据可视化神器——pyecharts教程(十二)

使用pyecharts绘制关系网图

简介

关系网图是一种可视化工具,用于展示各个元素之间的关联关系。在数据分析和可视化中,关系网图通常用于展示网络、社交关系、知识图谱等方面的数据。Pyecharts 是一个功能强大的 Python 数据可视化库,可以轻松创建各种类型的图表,包括关系网图。本文将介绍如何使用 Pyecharts 绘制关系网图,并提供相关的示例。

关系图类基础配置

  1. 导包

在Pyecharts中,每一种图都有不同的类,关系图也不例外,创建关系网图需要使用 Graph 类。首先,我们需要导入相关的模块:

from pyecharts import options as opts
from pyecharts.charts import Graph
  1. 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,  # 图元样式选项
    )

绘制关系图

  1. 绘制简单关系图

下面是使用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")

运行代码后,生成的图像如下图所示:

  1. 复杂关系网络图

我们经常可以在电视剧的介绍中看到不同角色的人物关系图,其实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来绘制关系网图的方法,关系网图对于我们在分析不同主体的任务关系是很有帮助的,希望本文可以帮助到大家。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关文章:

  • java返回文件时为图片或pdf等设置在线预览或下载
  • sqlalchemy 事务自动控制(类java aop)
  • 【蓝桥杯/DFS】分考场 (Java)
  • SwiftUI之深入解析Alignment Guides的超实用实战教程
  • 漏洞修复整理
  • WaitForSingleObject 函数的诸多用途与使用场景总结
  • SCI一区级 | Matlab实现RIME-CNN-LSTM-Mutilhead-Attention多变量多步时序预测
  • 保存数据到文本文件或 CSV 文件的示例
  • 并发编程的12条规范
  • [Docker] Docker为什么出现
  • k8s operator从0到1实践
  • 静态网页设计——个人图书馆(HTML+CSS+JavaScript)(dw、sublime Text、webstorm、HBuilder X)
  • 设计模式-委托模式
  • Eva.js是什么(互动小游戏开发)
  • DC电源模块与AC电源模块的对比分析
  • 深入理解 Flink(七)Flink Slot 管理详解
  • 懒得玩游戏--帮我做数独
  • 【纯CSS特效源码】(二)精美的立体字
  • 结构化数据,非结构化数据,半结构化数据(AI问答)
  • 嵌入式培训机构四个月实训课程笔记(完整版)-C++和QT编程第一天-C++概述和基础(物联技术666)
  • 上海率先推进生物制品分段生产试点,这款国产1类创新药获批上市
  • 李家超:明日起香港特区护照持有人可免签入境阿联酋
  • 前四个月人民币贷款增加10.06万亿元,4月末M2余额同比增长8%
  • 2025年中国网络文明大会将于6月10日在安徽合肥举办
  • 违法违规收集使用个人信息,爱奇艺、轻颜等65款App被点名
  • 明查|印度空军“又有一架战机被巴基斯坦击落,飞行员被俘”?