如何 select 要在 networkx.draw 中绘制的边列表
How to select a list of edges to draw in networkx.draw
我有一个有很多边的 networkx 图,因此我想 select 我想绘制一个子集。但是有奇怪的行为。
import networkx as nx
G = nx.Graph()
G.add_edge(0,1,color=.1,weight=2)
G.add_edge(1,2,color=.4,weight=4)
G.add_edge(2,3,color=1.4,weight=6)
G.add_edge(3,4,color=2.4,weight=3)
G.add_edge(4,0,color=5.7,weight=1)
colors = nx.get_edge_attributes(G,'color').values()
weights = nx.get_edge_attributes(G,'weight').values()
pos = nx.circular_layout(G)
# This works:
nx.draw(G, pos,
edge_color=colors,
width=list(weights),
with_labels=True,
node_color='lightgreen',
)
# This works too:
nx.draw(G, pos,
edge_color=colors,
width=list(weights),
with_labels=True,
node_color='lightgreen',
edgelist=[(0,1),(1,2),(2,3),(3,4),(4,0)],
)
这是结果。 (稍后我会添加一个颜色条,这样颜色就可以解释了)。
# This however gives an error:
# ValueError: Invalid RGBA argument: 0.1
nx.draw(G, pos,
edge_color=colors,
width=list(weights),
with_labels=True,
node_color='lightgreen',
edgelist=[(0,1),(1,2),(2,3),],
)
有什么办法可以避免这个错误吗?在我看来,这是错误。但也许有一些我想念的东西。
我发现错误:您还必须编辑颜色关键字参数:
edgelist=[(0,1),(1,2),(2,3),]
nx.draw(G, pos,
edge_color=[G.edges[e]['color'] for e in edgelist],
width=list(weights),
with_labels=True,
node_color='lightgreen',
edgelist=edgelist,
)
但我仍然认为我得到的错误没有帮助...
你设置colors = nx.get_edge_attributes(G,'color').values()
这给出 dict_values([0.1, 5.7, 0.4, 1.4, 2.4])
draw
试图将 5 个值匹配到仅 3 个边
所以就像你说的,你必须调整colors
字典的大小
我有一个有很多边的 networkx 图,因此我想 select 我想绘制一个子集。但是有奇怪的行为。
import networkx as nx
G = nx.Graph()
G.add_edge(0,1,color=.1,weight=2)
G.add_edge(1,2,color=.4,weight=4)
G.add_edge(2,3,color=1.4,weight=6)
G.add_edge(3,4,color=2.4,weight=3)
G.add_edge(4,0,color=5.7,weight=1)
colors = nx.get_edge_attributes(G,'color').values()
weights = nx.get_edge_attributes(G,'weight').values()
pos = nx.circular_layout(G)
# This works:
nx.draw(G, pos,
edge_color=colors,
width=list(weights),
with_labels=True,
node_color='lightgreen',
)
# This works too:
nx.draw(G, pos,
edge_color=colors,
width=list(weights),
with_labels=True,
node_color='lightgreen',
edgelist=[(0,1),(1,2),(2,3),(3,4),(4,0)],
)
这是结果。 (稍后我会添加一个颜色条,这样颜色就可以解释了)。
# This however gives an error:
# ValueError: Invalid RGBA argument: 0.1
nx.draw(G, pos,
edge_color=colors,
width=list(weights),
with_labels=True,
node_color='lightgreen',
edgelist=[(0,1),(1,2),(2,3),],
)
有什么办法可以避免这个错误吗?在我看来,这是错误。但也许有一些我想念的东西。
我发现错误:您还必须编辑颜色关键字参数:
edgelist=[(0,1),(1,2),(2,3),]
nx.draw(G, pos,
edge_color=[G.edges[e]['color'] for e in edgelist],
width=list(weights),
with_labels=True,
node_color='lightgreen',
edgelist=edgelist,
)
但我仍然认为我得到的错误没有帮助...
你设置colors = nx.get_edge_attributes(G,'color').values()
这给出 dict_values([0.1, 5.7, 0.4, 1.4, 2.4])
draw
试图将 5 个值匹配到仅 3 个边
所以就像你说的,你必须调整colors
字典的大小