Y轴顶部刻度值不可见,调整plt.ylim无效,求解决建议
解决Y轴顶部刻度缺失问题
问题原因
你的代码中用np.arange(y_lim_min, y_lim_max, step)生成Y轴刻度,但np.arange的结束参数是开区间,不会包含y_lim_max这个值,这就是顶部刻度缺失的核心原因——你设置的Y轴上限值根本没被加入刻度列表里。
修复方法
方法1:扩展np.arange的结束范围
把np.arange的结束值改成y_lim_max + 步长,确保y_lim_max被包含进去:
y_lim_min = int(Point_umb['Subsidence_3']) - (int(Point_umb['Subsidence_3']) % 5) y_lim_max = int(y[0]) + (5 - (int(y[0]) % 5)) plt.ylim(bottom=y_lim_min, top=y_lim_max) y_range = y_lim_max - y_lim_min if y_range < 5.01: step = 1 plt.yticks(np.arange(y_lim_min, y_lim_max + step, step)) print('Üks') print(y_lim_max) elif 5.01 < y_range < 20.01: step = 5 plt.yticks(np.arange(y_lim_min, y_lim_max + step, step)) print('viis') print(y_lim_max) else: step = 10 plt.yticks(np.arange(y_lim_min, y_lim_max + step, step)) print('muu') print(y_range) print(y_lim_max) plt.grid() plt.legend(['InSAR 18.02.2023','Validation trend','Threshold 1','Threshold 2','Threshold 3'], loc='upper center', bbox_to_anchor=(0.5, -0.2), ncol=5) plt.title(f'Subsidence rate of {name}', fontsize=30) plt.savefig(f"./images/{name}.png", bbox_inches="tight") plt.show()
方法2:手动追加顶部刻度
先生成基础刻度数组,再把y_lim_max手动加进去:
# 以中间分支为例 ticks = np.arange(y_lim_min, y_lim_max, 5) plt.yticks(np.append(ticks, y_lim_max))
方法3:让Matplotlib自动管理刻度
如果不需要严格自定义刻度间隔,可以删掉手动设置plt.yticks的代码,用locator_params控制刻度密度,让Matplotlib自动包含上下限:
plt.ylim(bottom=y_lim_min, top=y_lim_max) y_range = y_lim_max - y_lim_min if y_range <5.01: plt.locator_params(axis='y', nbins=6) elif 5.01 < y_range <20.01: plt.locator_params(axis='y', nbins=5) else: plt.locator_params(axis='y', nbins=4)
问题截图

内容的提问来源于stack exchange,提问作者Anti Gruno
相关产品推荐
相关产品推荐

