Matplotlib如何设置不同间隔xticks并指定X轴刻度范围
问题根因
调用plt.plot()时如果只传入一维数值序列,Matplotlib会默认用序列的索引下标作为X轴坐标。传入的1/(np.arange(0.1,3,0.1))一共包含29个数值,对应下标范围是0~28,因此默认X轴显示0到28的刻度。
直接运行plt.xticks([0,1,2])时,实际是在下标0、1、2(即序列前三个点)的位置打刻度,会出现刻度全挤在图最左侧的异常效果,和预期的0~3数值X轴不匹配。


正确实现方案
最稳妥的方式是绘图时显式传入X轴的数值序列,不要依赖默认的索引坐标:
import numpy as np import matplotlib.pyplot as plt # 定义X轴取值序列 x = np.arange(0.1, 3, 0.1) y = 1 / x # 绘图时同时传入x、y坐标 plt.plot(x, y) # 设置X轴显示范围为0到3 plt.xlim(left=0, right=3) # 按需设置X轴刻度,比如间隔1就传[0,1,2,3],需要其他间隔/非均匀刻度直接修改列表内容即可 plt.xticks([0, 1, 2, 3]) plt.show()
不推荐用硬改刻度标签的方式凑效果:这种方式本质是把索引位置的显示文本改成目标数值,X轴实际坐标范围还是0~28,后续添加标注、做交互选点时很容易出现坐标错位问题。
内容的提问来源于stack exchange,提问作者DHJ
相关产品推荐
相关产品推荐

