NetworkX 中的图例 python 基于边缘颜色
Legend in NetworkX python based on edge color
由于我是 python 和 networkX 的新手,因此我在添加基于边缘颜色的图例时遇到了麻烦。
我有一个 excel sheet 为模型提供边缘属性之一的颜色,指示边缘的颜色(如果是卡车则为黄色,轮船为蓝色等)。但是,我的代码没有正确执行图例逻辑。图例显示为另一幅图。
我尝试使用 nx.draw_networkx_edges 但我无法弄明白。
这是代码:
fig, ax = plt.subplots(figsize=(10, 5))
plt.title('Transportation Network', size=15)
#nx.draw_networkx_labels(GR, pos_dict)
nx.draw(g, pos=node_positions, edge_color=edge_colors, node_size=40, node_color='black', ax=ax)
plt.xlabel('Time ( 1 epoch= 15 mins)')
plt.ylabel("Cities")
ax.set_axis_on()
ax.tick_params(left=True, bottom=True, labelleft=True, labelbottom=True )
plt.locator_params(axis="y", nbins=3)
plt.locator_params(axis="x", nbins=30)
ax.set_yticks([10,20,30])
ax.set_yticklabels(['DB','AD','AA'])
plt.show()
plt.plot(edgelist["Color"], "Yellow", label="Truck")
plt.plot(edgelist["Color"], "Green", label="Train")
plt.plot(edgelist["Color"], "Blue", label="Ship")
plt.legend()
您可以创建 custom legend via dummy Line2D
个对象。
为了让黄色更显眼,您可以将其替换为'Gold'
:
edge_colors = ['Gold' if c == 'Yellow' else c for c in edge_colors]
要添加自定义图例,在 ax.set_yticklabels(['DB','AD','AA'])
之后的代码中,您可以将剩余的代码替换为:
from matplotlib.lines import Line2D
handles = [Line2D([], [], color=color, label=label)
for color, label in zip(["Gold", "Green", "Blue"], ["Truck", "Train", "Ship"])]
ax.legend(handles=handles)
plt.show()
由于我是 python 和 networkX 的新手,因此我在添加基于边缘颜色的图例时遇到了麻烦。 我有一个 excel sheet 为模型提供边缘属性之一的颜色,指示边缘的颜色(如果是卡车则为黄色,轮船为蓝色等)。但是,我的代码没有正确执行图例逻辑。图例显示为另一幅图。
我尝试使用 nx.draw_networkx_edges 但我无法弄明白。
这是代码:
fig, ax = plt.subplots(figsize=(10, 5))
plt.title('Transportation Network', size=15)
#nx.draw_networkx_labels(GR, pos_dict)
nx.draw(g, pos=node_positions, edge_color=edge_colors, node_size=40, node_color='black', ax=ax)
plt.xlabel('Time ( 1 epoch= 15 mins)')
plt.ylabel("Cities")
ax.set_axis_on()
ax.tick_params(left=True, bottom=True, labelleft=True, labelbottom=True )
plt.locator_params(axis="y", nbins=3)
plt.locator_params(axis="x", nbins=30)
ax.set_yticks([10,20,30])
ax.set_yticklabels(['DB','AD','AA'])
plt.show()
plt.plot(edgelist["Color"], "Yellow", label="Truck")
plt.plot(edgelist["Color"], "Green", label="Train")
plt.plot(edgelist["Color"], "Blue", label="Ship")
plt.legend()
您可以创建 custom legend via dummy Line2D
个对象。
为了让黄色更显眼,您可以将其替换为'Gold'
:
edge_colors = ['Gold' if c == 'Yellow' else c for c in edge_colors]
要添加自定义图例,在 ax.set_yticklabels(['DB','AD','AA'])
之后的代码中,您可以将剩余的代码替换为:
from matplotlib.lines import Line2D
handles = [Line2D([], [], color=color, label=label)
for color, label in zip(["Gold", "Green", "Blue"], ["Truck", "Train", "Ship"])]
ax.legend(handles=handles)
plt.show()