网站打开出现建设中,火车头wordpress发布模块4.9,楼盘设计师工资一般多少,商城wordpress主题文章目录 Pyecharts绘制多种炫酷关系网图引言准备工作代码实战1. 基本关系网图2. 自定义节点样式和边样式3. 关系网图的层级结构4. 添加标签和工具提示5. 动态关系网图6. 高级关系网图 - Les Miserables 示例7. 自定义关系网图布局8. 添加背景图9. 3D 关系网图10. 热力关系网图… 文章目录 Pyecharts绘制多种炫酷关系网图引言准备工作代码实战1. 基本关系网图2. 自定义节点样式和边样式3. 关系网图的层级结构4. 添加标签和工具提示5. 动态关系网图6. 高级关系网图 - Les Miserables 示例7. 自定义关系网图布局8. 添加背景图9. 3D 关系网图10. 热力关系网图11. 细粒度控制节点和边的样式12. 使用 Symbol 图标作为节点13. 使用涟漪特效14. 动态修改关系网图数据15. 使用自定义的关系算法16. 使用 MarkLine 增强关系图17. 在关系图中添加动态效果18. 关系图的异步加载19. 自定义关系图背景20. 在关系图中使用 Tooltip 总结 Pyecharts绘制多种炫酷关系网图
引言
在数据可视化领域关系网图是一种强大的工具可以展示实体之间的复杂关系。Pyecharts 是一个基于 Echarts 的 Python 可视化库提供了简单而强大的接口使得绘制关系网图变得轻松而愉快。本文将介绍 Pyecharts 绘制多种炫酷关系网图的参数说明并通过代码实战演示如何创建令人印象深刻的关系网图。
准备工作
在开始之前确保已经安装了 Pyecharts 和相关的依赖库。可以通过以下命令安装
pip install pyecharts代码实战
1. 基本关系网图
首先让我们从一个基本的关系网图开始展示实体之间的简单连接。
from pyecharts import options as opts
from pyecharts.charts import Graph# 构造节点和边
nodes [{name: A}, {name: B}, {name: C}]
links [{source: A, target: B}, {source: B, target: C}]# 创建图表
graph (Graph().add(, nodes, links, repulsion8000).set_global_opts(title_optsopts.TitleOpts(title基本关系网图))
)# 保存图表
graph.render(basic_relation_graph.html)2. 自定义节点样式和边样式
为了使关系网图更具吸引力我们可以自定义节点和边的样式。
from pyecharts import options as opts
from pyecharts.charts import Graph# 构造节点和边并为节点指定样式
nodes [{name: A, symbolSize: 50, itemStyle: {color: red}}, {name: B, symbolSize: 30, itemStyle: {color: blue}}, {name: C, symbolSize: 40, itemStyle: {color: green}}]# 为边指定样式
links [{source: A, target: B, lineStyle: {width: 2, color: orange}},{source: B, target: C, lineStyle: {width: 3, color: purple}}]# 创建图表
graph (Graph().add(, nodes, links, repulsion8000).set_global_opts(title_optsopts.TitleOpts(title自定义节点和边样式))
)# 保存图表
graph.render(custom_style_graph.html)3. 关系网图的层级结构
有时我们希望展示关系网图的层级结构使得图表更加清晰。
from pyecharts import options as opts
from pyecharts.charts import Graph# 构造节点和边并为节点指定层级
nodes [{name: A, symbolSize: 50, category: 0}, {name: B, symbolSize: 30, category: 1}, {name: C, symbolSize: 40, category: 1}]# 为边指定层级
links [{source: A, target: B}, {source: B, target: C}]# 创建图表
graph (Graph().add(, nodes, links, repulsion8000, categories[{name: Category 0}, {name: Category 1}]).set_global_opts(title_optsopts.TitleOpts(title关系网图的层级结构))
)# 保存图表
graph.render(hierarchical_graph.html)4. 添加标签和工具提示
通过添加标签和工具提示我们可以为关系网图提供更多信息。
from pyecharts import options as opts
from pyecharts.charts import Graph# 构造节点和边并为节点添加标签
nodes [{name: A, symbolSize: 50, label: {show: True}}, {name: B, symbolSize: 30, label: {show: True}}, {name: C, symbolSize: 40, label: {show: True}}]# 为边添加工具提示
links [{source: A, target: B, tooltip: {show: True, formatter: A与B之间的关系}}, {source: B, target: C, tooltip: {show: True, formatter: B与C之间的关系}}]# 创建图表
graph (Graph().add(, nodes, links, repulsion8000).set_global_opts(title_optsopts.TitleOpts(title添加标签和工具提示))
)# 保存图表
graph.render(label_tooltip_graph.html)5. 动态关系网图
在某些场景下我们希望展示关系的动态变化这时可以使用动态关系网图。
from pyecharts import options as opts
from pyecharts.charts import Graph# 构造节点和边并为节点添加时间轴数据
nodes [{name: A}, {name: B}, {name: C}]
links [{source: A, target: B}, {source: B, target: C}]
timeline_data [2022-01-01, 2022-02-01, 2022-03-01]# 创建动态图表
graph (Graph().add(series_name,nodesnodes,linkslinks,repulsion8000,linestyle_optsopts.LineStyleOpts(width2),).set_global_opts(title_optsopts.TitleOpts(title动态关系网图),xaxis_optsopts.AxisOpts(type_category, boundary_gapFalse),yaxis_optsopts.AxisOpts(type_value),timeline_optsopts.TimelineOpts(datatimeline_data, is_auto_playTrue, is_inverseTrue),)
)# 保存图表
graph.render(dynamic_relation_graph.html)6. 高级关系网图 - Les Miserables 示例
以《悲惨世界》Les Miserables小说中人物关系为例展示一个更复杂的关系网图。
from pyecharts import options as opts
from pyecharts.charts import Graph# 读取Les Miserables数据
with open(les_miserables.json, r, encodingutf-8) as f:data f.read()nodes, links, categories, _ eval(data)# 创建图表
graph (Graph().add(series_name,nodesnodes,linkslinks,categoriescategories,layoutcircular,repulsion50,is_rotate_labelTrue,).set_global_opts(title_optsopts.TitleOpts(titleLes Miserables 人物关系图),legend_optsopts.LegendOpts(orientvertical, pos_left2%, pos_top20%),)
)# 保存图表
graph.render(les_miserables_graph.html)以上代码中les_miserables.json 包含了《悲惨世界》中人物的关系数据可以从相关数据集中获取。
7. 自定义关系网图布局
Pyecharts 提供了多种布局算法可以根据需求选择合适的布局使关系网图更易于理解。
from pyecharts import options as opts
from pyecharts.charts import Graph# 构造节点和边
nodes [{name: A}, {name: B}, {name: C}]
links [{source: A, target: B}, {source: B, target: C}]# 创建图表指定力导向布局
graph (Graph().add(, nodes, links, layoutforce, repulsion8000).set_global_opts(title_optsopts.TitleOpts(title自定义关系网图布局))
)# 保存图表
graph.render(custom_layout_graph.html)8. 添加背景图
为关系网图添加背景图可以更好地展示实体之间的关系。
from pyecharts import options as opts
from pyecharts.charts import Graph# 构造节点和边
nodes [{name: A}, {name: B}, {name: C}]
links [{source: A, target: B}, {source: B, target: C}]# 创建图表添加背景图
graph (Graph().add(, nodes, links, repulsion8000).set_global_opts(title_optsopts.TitleOpts(title关系网图添加背景图),graphic_opts[opts.GraphicImage(graphic_itemopts.GraphicItem(id_bg, right0, top0, z-1, boundingraw),graphic_imagestyle_optsopts.GraphicImageStyle(imagebackground_image.jpg, width800, height600),)],)
)# 保存图表
graph.render(background_image_graph.html)9. 3D 关系网图
使用 Pyecharts 的 3D 功能可以创建具有立体感的关系网图。
from pyecharts import options as opts
from pyecharts.charts import Graph# 构造节点和边
nodes [{name: A, symbolSize: 50}, {name: B, symbolSize: 30}, {name: C, symbolSize: 40}]
links [{source: A, target: B}, {source: B, target: C}]# 创建3D关系网图
graph (Graph().add(, nodes, links, repulsion8000, is_3dTrue).set_global_opts(title_optsopts.TitleOpts(title3D关系网图))
)# 保存图表
graph.render(3d_relation_graph.html)10. 热力关系网图
通过调整边的颜色和宽度可以呈现关系的热度。
from pyecharts import options as opts
from pyecharts.charts import Graph# 构造节点和边
nodes [{name: A}, {name: B}, {name: C}]
links [{source: A, target: B, value: 5}, {source: B, target: C, value: 8}]# 创建热力关系网图
graph (Graph().add(, nodes, links, repulsion8000, edge_symbol[circle, arrow]).set_series_opts(label_optsopts.LabelOpts(is_showFalse)).set_global_opts(title_optsopts.TitleOpts(title热力关系网图))
)# 保存图表
graph.render(heat_relation_graph.html)11. 细粒度控制节点和边的样式
Pyecharts 提供了细粒度的样式控制使得我们可以更灵活地调整节点和边的外观。
from pyecharts import options as opts
from pyecharts.charts import Graph# 构造节点和边
nodes [{name: A, symbolSize: 50, itemStyle: {color: red, borderColor: black}},{name: B, symbolSize: 30, itemStyle: {color: blue, borderColor: black}},{name: C, symbolSize: 40, itemStyle: {color: green, borderColor: black}},
]
links [{source: A, target: B, lineStyle: {width: 2, color: orange}},{source: B, target: C, lineStyle: {width: 3, color: purple}},
]# 创建图表
graph (Graph().add(, nodes, links, repulsion8000).set_global_opts(title_optsopts.TitleOpts(title细粒度控制节点和边的样式))
)# 保存图表
graph.render(fine_grained_style_graph.html)12. 使用 Symbol 图标作为节点
Pyecharts 支持使用各种图标作为节点提供了丰富的内置图标供选择。
from pyecharts import options as opts
from pyecharts.charts import Graph# 构造节点和边使用 Symbol 图标作为节点
nodes [{name: A, symbol: circle}, {name: B, symbol: rect}, {name: C, symbol: triangle}]
links [{source: A, target: B}, {source: B, target: C}]# 创建图表
graph (Graph().add(, nodes, links, repulsion8000).set_global_opts(title_optsopts.TitleOpts(title使用 Symbol 图标作为节点))
)# 保存图表
graph.render(symbol_as_node_graph.html)13. 使用涟漪特效
通过使用涟漪特效可以使关系网图更加生动有趣。
from pyecharts import options as opts
from pyecharts.charts import Graph# 构造节点和边添加涟漪特效
nodes [{name: A}, {name: B}, {name: C}]
links [{source: A, target: B}, {source: B, target: C}]# 创建图表
graph (Graph().add(, nodes, links, repulsion8000, is_roamTrue, is_focusnodeTrue).set_global_opts(title_optsopts.TitleOpts(title使用涟漪特效))
)# 保存图表
graph.render(ripple_effect_graph.html)14. 动态修改关系网图数据
Pyecharts 支持动态修改关系网图的数据使得图表能够实时更新。
from pyecharts import options as opts
from pyecharts.charts import Graph# 初始节点和边数据
initial_nodes [{name: A}, {name: B}, {name: C}]
initial_links [{source: A, target: B}, {source: B, target: C}]# 创建图表
graph Graph().add(, initial_nodes, initial_links, repulsion8000)# 设置全局配置
graph.set_global_opts(title_optsopts.TitleOpts(title动态修改关系网图数据))# 保存初始状态图表
graph.render(dynamic_data_graph_initial.html)# 动态修改数据
new_nodes [{name: D}, {name: E}]
new_links [{source: D, target: E}]# 更新图表
graph.add(, new_nodes, new_links)
graph.render(dynamic_data_graph_updated.html)15. 使用自定义的关系算法
Pyecharts 允许用户使用自定义的关系算法以更好地控制节点之间的关系。
from pyecharts import options as opts
from pyecharts.charts import Graph# 构造节点和边
nodes [{name: A, symbolSize: 50}, {name: B, symbolSize: 30}, {name: C, symbolSize: 40}]
links [{source: A, target: B}, {source: B, target: C}]# 创建图表使用自定义的关系算法
graph (Graph().add(,nodes,links,layoutcircular,repulsion8000,edge_symbol[circle, arrow],edge_symbol_size[4, 10],).set_global_opts(title_optsopts.TitleOpts(title使用自定义的关系算法))
)# 保存图表
graph.render(custom_relation_algorithm_graph.html)16. 使用 MarkLine 增强关系图
在关系图中有时候我们希望通过 MarkLine 来强调某些特殊的关系这样可以更加直观地传达信息。
from pyecharts import options as opts
from pyecharts.charts import Graph# 构造节点和边
nodes [{name: A}, {name: B}, {name: C}]
links [{source: A, target: B}, {source: B, target: C}]# 创建图表使用 MarkLine 增强关系图
graph (Graph().add(, nodes, links, repulsion8000).set_global_opts(title_optsopts.TitleOpts(title使用 MarkLine 增强关系图),visualmap_optsopts.VisualMapOpts(pos_leftright, pos_topcenter, orientvertical),).set_series_opts(label_optsopts.LabelOpts(is_showFalse),linestyle_optsopts.LineStyleOpts(width2, opacity0.6),).add(series_name,data_pairlinks,linestyle_optsopts.LineStyleOpts(width1, opacity0.3, curve0.3, type_dotted),markline_optsopts.MarkLineOpts(symbol[none, none],linestyle_optsopts.LineStyleOpts(width2, type_solid),data[opts.MarkLineItem(type_average, name平均值)],),)
)# 保存图表
graph.render(markline_relation_graph.html)17. 在关系图中添加动态效果
通过设置 is_animation 参数我们可以为关系图添加动态效果增强可视化的吸引力。
from pyecharts import options as opts
from pyecharts.charts import Graph# 构造节点和边
nodes [{name: A}, {name: B}, {name: C}]
links [{source: A, target: B}, {source: B, target: C}]# 创建图表添加动态效果
graph (Graph().add(, nodes, links, repulsion8000, is_animationTrue).set_global_opts(title_optsopts.TitleOpts(title关系图添加动态效果))
)# 保存图表
graph.render(animated_relation_graph.html)18. 关系图的异步加载
对于大规模的关系图为了提高性能可以使用异步加载的方式按需加载数据。
import time
from pyecharts import options as opts
from pyecharts.charts import Graph# 模拟异步加载数据
def load_data() - tuple:time.sleep(2) # 模拟加载耗时nodes [{name: A}, {name: B}, {name: C}]links [{source: A, target: B}, {source: B, target: C}]return nodes, links# 创建图表异步加载数据
graph Graph(init_optsopts.InitOpts(width100%, height800px))# 通过 add_js_funcs 方法调用异步加载数据的函数
graph.add_js_funcs(load_data)# 设置全局配置
graph.set_global_opts(title_optsopts.TitleOpts(title关系图异步加载))# 保存图表
graph.render(async_load_relation_graph.html)19. 自定义关系图背景
通过设置 graphic_opts 参数我们可以为关系图添加自定义的背景元素增强图表的美观度。
from pyecharts import options as opts
from pyecharts.charts import Graph# 构造节点和边
nodes [{name: A}, {name: B}, {name: C}]
links [{source: A, target: B}, {source: B, target: C}]# 创建图表添加自定义背景
graph (Graph().add(, nodes, links, repulsion8000).set_global_opts(title_optsopts.TitleOpts(title自定义关系图背景),graphic_opts[opts.GraphicRect(graphic_itemopts.GraphicItem(0, 0, width100%, height100%, transparentTrue),graphic_shape_optsopts.GraphicShapeOpts(fillrgba(0,0,0,0.3)),)],)
)# 保存图表
graph.render(custom_background_relation_graph.html)20. 在关系图中使用 Tooltip
通过添加 Tooltip我们可以在关系图中展示更详细的信息提高图表的信息传达能力。
from pyecharts import options as opts
from pyecharts.charts import Graph# 构造节点和边
nodes [{name: A, value: 10}, {name: B, value: 20}, {name: C, value: 15}]
links [{source: A, target: B}, {source: B, target: C}]# 创建图表添加 Tooltip
graph (Graph().add(, nodes, links, repulsion8000).set_global_opts(title_optsopts.TitleOpts(title关系图使用 Tooltip),tooltip_optsopts.TooltipOpts(formatter{b}:{c}),)
)# 保存图表
graph.render(tooltip_relation_graph.html)通过这些示例我们进一步了解了 Pyecharts 绘制多种炫酷关系图的技巧和方法。这些功能的灵活运用可以使你更好地定制和呈现关系图展示出更丰富和有趣的信息。在实际应用中你可以根据需求灵活运用这些技巧为关系图增色添彩。
总结
在本篇技术博客中我们深入学习了使用 Pyecharts 绘制多种炫酷关系图的方法包括基本关系图、自定义样式、布局控制、动态效果、异步加载、背景定制、MarkLine 增强关系图、Tooltip 使用等多个方面。以下是一些总结和重要的观点 基本关系图绘制 我们从最基础的关系图开始介绍了如何构造节点和边并使用 Pyecharts 创建简单而直观的关系图。 自定义样式 通过自定义节点和边的样式我们可以使关系图更具个性符合实际应用场景的需求。 布局控制 Pyecharts 提供了多种布局算法允许用户根据需要选择合适的布局方式以更好地呈现关系图。 动态效果和异步加载 通过设置动态效果和异步加载可以增强关系图的可视化效果使用户交互更加流畅。 背景定制和图表增强 Pyecharts 提供了灵活的背景定制和图表增强功能使用户可以更好地美化关系图突出重点信息。 MarkLine 增强关系图 使用 MarkLine 可以在关系图中强调某些特殊的关系提高图表的信息传达能力。 Tooltip 使用 添加 Tooltip 可以在关系图中展示更详细的信息提供更好的用户体验。
通过这些技巧我们可以创建出各种各样炫酷、直观、有趣的关系图从而更好地理解和展示复杂的数据关系。同时Pyecharts 提供了丰富的功能和参数使得用户在可视化过程中具有更大的灵活性和创造力。希望读者能够根据本文的指导更好地利用 Pyecharts 创建出令人印象深刻的关系图为数据可视化工作带来更多的灵感和创新。