【发布时间】:2015-03-06 00:43:40
【问题描述】:
注意——这是对上一个问题的完全重写,我认为这太复杂了。它提供了一个更简单的版本,如果我能解决,它将导致进展。
我已经根据这个 SO 答案调整了我的代码:Is there a way to guarantee hierarchical output from NetworkX?
使用以下非常简单的代码,我得到了奇怪的着色行为。
import networkx as nx
import matplotlib.pyplot as plt
G = nx.DiGraph()
G.add_node("ROOT")
for i in xrange(1):
for j in range(1):
G.add_node(str(j)+"_%i" % i, )
if j ==0:
G.add_edge("ROOT", str(j)+"_%i" % i)
else:
G.add_edge(str(j-1)+"_%i" %i, str(j)+"_%i" % i)
pos=nx.graphviz_layout(G,prog='dot')
for i in xrange(1):
nodelist = ['ROOT']
for j in range(1):
nodelist.append(str(j)+"_%i" % i )
nx.draw_networkx_nodes(G,pos, nodelist=nodelist, cmap=plt.get_cmap('Set3'), node_color=[0,1])
nx.draw_networkx_edges(G, pos,arrows=True)
limits=plt.axis('off')
我为node_color 赋予什么值似乎并不重要,只是这些值是否不同。例如,使用node_color = [0,1],我得到的行为与[0,.1] 或[0,1000] 完全相同。 (为什么?颜色图的取值介于 0 和 1 之间)。
但是,如果我更改颜色图,颜色会发生变化。例如:
如果我设置node_color = [3,3](或任何两个相同的值),我总是得到相同的东西,节点的颜色相同。
有什么想法我在这里做错了吗?
【问题讨论】:
-
一个独立的示例会有所帮助,同时了解您的函数中的
nodecolors和x是什么。 -
添加了所有其他相关的部分。 (我只是一开始就省略了它们,因为它们有点参与,而且我是 NetworkX 的新手,所以我认为我可能会犯一个新手错误。)我认为这是我可以提出的问题的自包含!
-
你能添加一些其他“时间”值的输出吗?
-
你去,做了0,1和2次。
-
我已经完全重写了这个问题,让它变得简单多了。我希望这有助于确定实际发生的情况。没有人需要知道所有其他的东西。
标签: python matplotlib tree graphviz networkx