matplotlib设置0-1刻度后范围内数值绘制在图外的问题如何解决
问题原因
你仅设置了坐标轴的刻度位置,没有限制坐标轴的显示范围,matplotlib默认会根据输入数据的范围自动调整视口。如果你的数据没有覆盖0-1的完整区间,默认视口范围会小于0-1,你提前设置的0、1等刻度就会出现在视口外,数据也会显示错位。
另外要注意你提供的数据每行第一个值为Y、第二个为X,调用plot方法时第一个参数要传X值、第二个传Y值,不要搞反顺序。
解决代码
import matplotlib.pyplot as plt import numpy as np # 读取XY数据,第一列为Y,第二列为X data = np.array([ [1.0, 0.06], [1.0, 0.09], [1.0, 0.12], [1.0, 0.16], [1.0, 0.19], [1.0, 0.22], [1.0, 0.25], [1.0, 0.28], [1.0, 0.31], [1.0, 0.34], [1.0, 0.38], [1.0, 0.41], [1.0, 0.44], [1.0, 0.47], [1.0, 0.5], [1.0, 0.53], [1.0, 0.56], [0.95, 0.56], [0.95, 0.59], [0.95, 0.62], [0.95, 0.66], [0.96, 0.69], [0.96, 0.72], [0.96, 0.75], [0.96, 0.78], [0.93, 0.78], [0.93, 0.81], [0.93, 0.84], [0.93, 0.88], [0.94, 0.91], [0.94, 0.94], [0.91, 0.94] ]) x = data[:, 1] y = data[:, 0] fig, ax = plt.subplots() ax.grid() # 设置刻度步长为0.1 ax.set_xticks(np.arange(0, 1.1, 0.1)) ax.set_yticks(np.arange(0, 1.1, 0.1)) # 强制锁定XY轴显示范围为0到1,核心修复代码 ax.set_xlim(0, 1) ax.set_ylim(0, 1) ax.plot(x, y) plt.show()
内容的提问来源于stack exchange,提问作者mki
相关产品推荐
相关产品推荐

