【发布时间】:2014-06-16 21:41:01
【问题描述】:
我有一个(有向无环)图,每个节点都有一个离散的时间戳,即每个节点都标有一个数字:1,2,3,4...
图表可能有多个组件,并且时间戳随着图表的方向而增加。
我将图形作为 netowrkx 对象,现在我想用图形 s.t. 在 python 中创建一个图形。节点的高度由它的时间戳决定(顶部的时间戳较低,底部的时间戳较高,具有相同时间戳的节点处于相同高度)。这意味着例如,如果两个组件的时间戳不同,则它们可能在不同的初始高度“开始”(它们的根的高度)。
另一方面,给定节点 A 标记为时间 = 4,节点 B 标记为 5,我希望 B 在图中较低。
第三个例子:如果 2 个节点是第三个节点的子节点,但它们是在不同时间创建的 - 最新节点的边会更长,s.t.每个孩子都将处于自己的时间级别。
现在写,我的代码很简单:
import networkx as nt
import matplotlib.pyplot as plt
graph = networkx.DiGraph()
self.graph.add_node("A", time = 1)
...# Add more nodes
graph.add_edge("A","B")
...# Add more edges
plt.figure(1,figsize=(30,10))
pos=nt.graphviz_layout(graph,prog='dot')
networkx.draw(graph,pos,with_labels=False,arrows=True, node_size = 80)
(我没有足够的声誉来上传结果图片...:-))
如何在 Python 中绘制这个?哪个包可以帮助我?
【问题讨论】:
-
有点不清楚,但如果我理解正确,您想根据时间戳指定每个节点的高度。不能设置每个节点的几何位置吗?向我们展示您到目前为止所做的工作(代码)可以帮助我们了解应该改变什么或采取不同的方式。
-
谢谢雷蒂。如何在networkx中指定节点的几何位置?图表可能很大,所以我肯定需要它是自动的。
标签: python graph plot networkx