软件测试|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")

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

软件测试|Python数据可视化神器——pyecharts教程(十二)_第1张图片

  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")

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

软件测试|Python数据可视化神器——pyecharts教程(十二)_第2张图片

总结

本文主要介绍了使用pyecharts来绘制关系网图的方法,关系网图对于我们在分析不同主体的任务关系是很有帮助的,希望本文可以帮助到大家。

你可能感兴趣的:(数据可视化,信息可视化,python)