networkx 中的重叠透明边

overlapping transparent edges in networkx

我在 networkx 中有一个图形,其中有许多重叠的边。我试图让它们透明,这样边缘的积累会形成更深的颜色,但是无论许多边缘重叠,它们仍然是相同的苍白阴影。例如有一条边:

import networkx as nx
import matplotlib.pyplot as plt
import matplotlib.lines as mlines

G = nx.Graph()

colorlist = []
G.add_edge(1,2)

# explicitly set positions
nodes = {1: (1,0),
2: (0,1)}

nx.draw_networkx(G, nodes, alpha=0.1)
ax = plt.gca()
plt.axis("off")
plt.show()

这给出了一条微弱的线

但是当六根透明线相互叠加时

import networkx as nx
import matplotlib.pyplot as plt
import matplotlib.lines as mlines

G = nx.Graph()

colorlist = []
G.add_edge(1,2)
G.add_edge(1,2)
G.add_edge(1,2)
G.add_edge(1,2)
G.add_edge(1,2)
G.add_edge(1,2)

# explicitly set positions
nodes = {1: (1,0),
2: (0,1)}

nx.draw_networkx(G, nodes, alpha=0.1)
ax = plt.gca()
plt.axis("off")
plt.show()

看起来一模一样

为什么将透明线相互叠加不会形成较暗的线,我该如何实现?

您需要使用 MultiGraph 而不是 Graph。否则,即使您添加多次,您的图表仍将只包含一条边。

以下将创建具有“较暗”边缘的所需图像:

G = nx.MultiGraph()

colorlist = []
G.add_edge(1,2)
G.add_edge(1,2)
G.add_edge(1,2)
G.add_edge(1,2)
G.add_edge(1,2)
G.add_edge(1,2)

# explicitly set positions
nodes = {1: (1,0),
2: (0,1)}

nx.draw_networkx(G, nodes, alpha=0.1)
ax = plt.gca()
plt.axis("off")
plt.show()