HyperNetX 高级可视化技巧:Storyline 时间线图与 UpSet 图的绘制实战 HyperNetX 高级可视化技巧Storyline 时间线图与 UpSet 图的绘制实战【免费下载链接】HyperNetXPython package for hypergraph analysis and visualization.项目地址: https://gitcode.com/gh_mirrors/hy/HyperNetX超图Hypergraph的可视化一直是个难题——一条超边可以同时连接多个节点传统图论里两点一线的画法完全不够用。HyperNetXPython 超图分析与可视化库为此内置了两款高级绘图工具Storyline 时间线图和UpSet 图能优雅地展示谁在什么时候和谁在一起这类复杂关系。本文面向新手用最少的代码带你快速上手这两个 HyperNetX 高级可视化技巧轻松画出论文级别的插图。为什么超图可视化需要 Storyline 与 UpSet普通图里每条边只连接两个节点而超图中的超边可以包含任意数量的节点例如一场聚会来了哪些人就是一条超边。用节点连线图展示超图往往杂乱无章。HyperNetX 提供了两套解决思路UpSet 图把所有节点排在纵轴超边横排用圆点矩阵标示节点属于哪些超边类似集合交集的 UpSet 可视化。Storyline 时间线图让每个节点变成一条上下起伏的曲线超边以竖直圆角矩形呈现节点在超边处相遇天然适合展示时间顺序或事件序列。两者都实现在hypernetx/drawing/draw_storyline.py中一行代码即可调用。一步安装与数据准备安装 HyperNetX 后即可使用自带的玩具数据集无需额外准备数据import hypernetx as hnx from hypernetx.utils.toys.storylines import create_lesmis_small H, kwargs create_lesmis_small() # 《悲惨世界》场景超图自带 edge_ordercreate_lesmis_small等生成器位于hypernetx.utils.toys.storylines返回超图和一份包含edge_order的参数字典后者正是让 Storyline 图有序的关键。实战一快速绘制 Storyline 时间线图超图 Storyline 时间线图的绘制只需一个函数hnx.draw_incidence_storyline(H, **kwargs)节点以水平曲线呈现超边是竖直的圆角矩形节点与超边的交汇处用圆点incidence标出图形会自动按比例调整画布尺寸。下图展示了这类时间线图的典型形态——多条彩色曲线上下起伏清晰呈现实体在多个事件间的流动关系。实战二用 UpSet 图查看集合交集当你想快速回答哪些节点共同出现在哪些超边中时UpSet 图更直观hnx.draw_incidence_upset(H)draw_incidence_upset是 Storyline 布局的特例节点必须沿纵轴各占一条直线、超边沿横轴排列通过谱排序spectral ordering自动确定最优顺序。它对节点较多、超边较少的超图尤其友好。最实用的五个调参技巧控制超边顺序用edge_order指定超边在横轴上的排列配合node_order建议节点顺序是 Storyline 图清晰与否的关键。调整画布大小auto_size2将画布放大一倍auto_sizeFalse则关闭自动缩放改用plt.figure(figsize...)手动控制。自定义配色edges_kwargs、nodes_kwargs、incidences_kwargs分别控制超边、节点曲线和交会圆点的样式例如edges_kwargsdict(colorpink)即可把全部超边染成粉色。填充超边区域设置fill_edgesTrue超边会以更淡的颜色填充层次感更强。标签位置随心换edge_labels_on_axisFalse可把超边标签从横轴刻度改为绘制在超边底部附近。进阶控制曲线是否交叉默认的布局算法是SvenStoryline基于 SVEN 论文实现它允许节点曲线与超边交叉以换取更紧凑的布局。如果你希望曲线互不打扰可以通过layout_kwargs传参hnx.draw_incidence_storyline(H, layout_kwargsdict(allow_node_crossingsFalse), **kwargs)allow_edge_crossingsFalse则禁止曲线穿越超边。注意两者至少保留一项为 True否则无法完成布局。该算法的完整实现见hypernetx.drawing.draw_storyline.SvenStoryline相关更复杂的多数据集对比示例可参考tutorials/visualization目录下的进阶 Notebook。什么时候用哪种图数据带时间或顺序如场景、剧集、事件序列首选 Storyline 时间线图曲线起伏天然表达先后关系。数据强调成员归属如谁参加了哪些活动选 UpSet 图矩阵式排布便于对比集合交集。超图规模较大UpSet 图更省空间节点再多也各占一行、互不交叉。结语HyperNetX 把复杂的超图高级可视化封装成了draw_incidence_storyline与draw_incidence_upset两个函数几分钟就能产出一张论文级配图。先从create_lesmis_small()练手再逐步加入edge_order、layout_kwargs和自定义配色你很快就能把任意超图数据画明白。更多示例与源码解读可继续翻阅hypernetx/drawing/目录下的实现以及tutorials/visualization/中的可视化进阶教程。【免费下载链接】HyperNetXPython package for hypergraph analysis and visualization.项目地址: https://gitcode.com/gh_mirrors/hy/HyperNetX创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考