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()
我在 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()