Один из способов достижения этого заключается в следующем. Обратите внимание, что он не создает непрерывный треугольник, как вы описали, но вместо этого оценивает ширину ребер в одинаково расположенных точках и добавляет их к отдельной легенде.
import matplotlib.pyplot as plt
from matplotlib.lines import Line2D
import networkx as nx
# Number of lines to include in legend
NUM_INTERVALS = 6
# Set up random graph with random weights
G = nx.Graph()
for i in range(50):
G.add_edge(random.randint(1,10), random.randint(1,10), weight = random.uniform(0,8))
pos = nx.circular_layout(G)
# Get weights from graph
weights = [G[s][e]['weight'] for s, e in G.edges()]
# Get evenly distributed points over range of weights
lines = np.linspace(min(weights), max(weights), NUM_INTERVALS)
# Create lines from the weights
line2ds = [Line2D([],[], linewidth=width, color='black') for width in lines]
# Draw graph
nx.draw(G, pos, width=weights)
# Draw legend (rounding decimals to 2 places)
legend2 = plt.legend(line2ds, np.round(lines, decimals=2), bbox_to_anchor=(0, 1))
Вывод: