繁体   English   中英

如何让用户删除 PyVis 网络图中的节点或边?

[英]How do I let a user delete a node or edge in a PyVis network graph?

我们的网络图很嘈杂,需要理解,分解成单独的集群,并且通常进行清理。 人们如何做到这一点是我的一般问题,而我的具体问题是关于简单地删除一个对象。

我想设计一个迷你应用程序,将 PyVis 网络图交给用户,让他们以某种方式删除(drop、remove)边缘或节点,最好使用干净的按钮或键盘快捷键来影响当前选定的对象。

我在 PyVis 文档中找不到删除/删除/删除节点或边缘的命令或示例。 我找不到任何问题,更不用说在标记为 [pyvis] 的 StackOverflow 上回答如何执行此操作了。 (我可以在 Python 中管理列表和队列等,这是关于实时更改可视化图形而无需秘密重建整个事物。

我错过了一些明显的东西吗? 难道其他人都不想这样做吗?

但是,我找不到任何关于如何从可视化网络中删除现有节点或边缘的文档。 我正在考虑必须捕获输入,找出 X、Y 坐标和当前对象列表,返回并从列表中删除我想要的内容,然后重新生成整个显示。 严重地?

没错,pyvis 中不存在删除节点和边。 我使用 Networkx 来删除节点和边缘。 我认为这个包更适合玩图表,尽管它包含对可视化的最小支持。

Pyvis 有一个 from_nx 函数,用于从 Networkx 导入它。 但是,由于您想实时执行此操作,因此我想问题在于 pyvis 中缺少此功能。 在 pyvis 方法中,您可以破坏节点对象(网络的一部分)。 如果您想通过单击在界面中执行此操作,我建议将其与 networkx 结合使用,因为它可以帮助您检查条件并提供这些节点 ID。

希望我的回答对你有所帮助。 我还在下面为有兴趣将networkx转换为pyvis的人发布了一些代码。

import networkx as nx
from pyvis.network import Network
foo = nx.DiGraph()
foo.add_nodes_from(list_with_node_ids)
foo.add_edge(child_node_id), parent_node_id)

foo.remove_nodes_from(list_with_nodes_to_remove)

bar = Network('500px', '500px'
Network.from_nx(bar, foo)
bar.show('bar.html')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM