我正在使用 Python 来模拟有向图上发生的过程。我想制作这个过程的动画。
我遇到的问题是大多数 Python 图形可视化库将成对的有向边组合成单个边。例如,NetworkX http://networkx.lanl.gov显示下图时仅绘制两条边,而我想分别显示四个边:
import networkx as nx
import matplotlib.pyplot as plt
G = nx.MultiDiGraph()
G.add_edges_from([
(1, 2),
(2, 3),
(3, 2),
(2, 1),
])
plt.figure(figsize=(8,8))
nx.draw(G)
我想显示这样的内容,每个平行边单独绘制:
问题R中igraph中的R倒数边 https://stackoverflow.com/questions/5711540/r-reciprocal-edges-in-igraph-in-r似乎处理同样的问题,但解决方案是针对 R igraph 库的,而不是针对 Python 的。
有没有一种简单的方法可以使用现有的 Python 图形可视化库生成这种风格的绘图?如果它能支持多重图那就太好了。
我愿意接受调用外部程序来生成图像的解决方案。我想生成一系列的动画帧,因此解决方案必须是自动化的。
The Graphviz http://www.graphviz.org/工具似乎显示出明显的边缘。
例如,给出这个:
digraph G {
A -> B;
A -> B;
A -> B;
B -> C;
B -> A;
C -> B;
}
to dot
产生:
Graphviz 的输入语言非常简单,因此您可以自己生成它,尽管搜索“python graphviz”确实会出现几个库,包括graphvizPyPI 上的模块 https://pypi.org/project/graphviz/.
这是使用 python 生成上面的图graphviz
module:
from graphviz import Digraph
dot = Digraph()
dot.node('A', 'A')
dot.node('B', 'B')
dot.node('C', 'C')
dot.edges(['AB', 'AB', 'AB', 'BC', 'BA', 'CB'])
print(dot.source)
dot.render(view=True)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)