关系网图是一种可视化工具,用于展示各个元素之间的关联关系。在数据分析和可视化中,关系网图通常用于展示网络、社交关系、知识图谱等方面的数据。Pyecharts 是一个功能强大的 Python 数据可视化库,可以轻松创建各种类型的图表,包括关系网图。本文将介绍如何使用 Pyecharts 绘制关系网图,并提供相关的示例。
在Pyecharts中,每一种图都有不同的类,关系图也不例外,创建关系网图需要使用 Graph
类。首先,我们需要导入相关的模块:
from pyecharts import options as opts
from pyecharts.charts import Graph
我们在导入类之后,接下来就需要考虑对关系图进行具体的配置,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来绘制关系网图的方法,关系网图对于我们在分析不同主体的任务关系是很有帮助的,希望本文可以帮助到大家。