我正在为如何给这里的特定边缘添加颜色而苦苦挣扎。比方说,我想在不重写其他边的情况下,从一条边到两条边用蓝色?另外,我想知道我们是否可以让箭头从一个节点指向另一个节点,而不是边的直线?
import networkx as nx
import matplotlib.pyplot as plt
G = nx.Graph()
class obj(object):
def __init__(self,N,P):
self.N = N
self.P = P
one = obj(1,0.5)
two = obj(2,0.4)
three = obj(3,0.3)
four = obj(4,0.2)
G.add_node(one.N)
G.add_node(two.N)
G.add_node(three.N)
G.add_node(four.N)
G.add_edge(one.N,two.N)
G.add_edge(two.N,three.N)
G.add_edge(two.N,four.N)
G.add_edge(four.N,one.N)
nx.draw(G)
plt.show()发布于 2014-07-22 04:07:04
您可以使用networkx.draw的edge_color参数绘制具有不同颜色的边。下面是一个示例,其中您将第一个边颜色设置为红色,并通过传递列出每个边的颜色的“(1,2) (1,2)”将其他边设置为蓝色。在这个例子中,第一条边是红色的,而其他边是蓝色的。
nx.draw(G, pos=pos, edge_color=('r', 'b', 'b', 'b'))

如果你想在边上有箭头,你可以使用DiGraph (有向图)。你所要改变的就是:
G = nx.DiGraph()然后你的边缘就会被引导。

如果希望箭头指向两个方向,则必须在每个方向上添加每个边,并更新边颜色元组(因为现在您有两倍的边):
# Add edges in each direction
G.add_edge(one.N,two.N)
G.add_edge(two.N,one.N)
G.add_edge(two.N,three.N)
G.add_edge(three.N,two.N)
G.add_edge(two.N,four.N)
G.add_edge(four.N,two.N)
G.add_edge(four.N,one.N)
G.add_edge(one.N, four.N)
# Draw the graph
pos = nx.spring_layout(G)
nx.draw(G, pos=pos, edge_color=('r', 'b', 'r', 'b', 'b', 'b', 'b', 'b'))

https://stackoverflow.com/questions/24873626
复制相似问题