如何在NetworkX中添加y轴刻度标签?现有配置无法显示全部刻度
问题解决方法
你代码失效的核心原因是执行顺序错误:plt.locator_params()用来调整y轴刻度的位置和数量,你把它放在ax.set_yticklabels()之后,会先修改刻度配置、覆盖你之前设置的标签,自然无法得到预期效果。
正确的逻辑是先固定y轴的刻度位置,再设置对应刻度的标签,修改后的代码如下:
fig, ax = plt.subplots(figsize=(10, 5)) plt.title('Transportation Network') #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) # 可先运行下面这行打印当前y轴的数值范围,按需调整刻度位置 # print(ax.get_ylim()) # 先指定3个y轴刻度的位置,根据你的实际坐标范围调整数值即可 ax.set_yticks([0, 1, 2]) # 再设置对应刻度的标签 ax.set_yticklabels(['C','B','A'])
如果不想手动指定刻度位置,也可以保持plt.locator_params配置,只要把它挪到ax.set_yticklabels前面即可:
plt.locator_params(axis="y", nbins=3) ax.set_yticklabels(['C','B','A'])
内容的提问来源于stack exchange,提问作者Romio Rodriguez
相关产品推荐
相关产品推荐

