Python Matplotlib子图x轴刻度间隔过大 如何设置1步进显示0-5刻度
解决方法
方法1:直接手动指定X轴刻度(最简便,适合固定范围场景)
你只需要在每个子图的配置代码中,加入set_xticks方法指定要显示的刻度值即可,示例如下:
# 给ax1添加设置 ax1.set_xticks(np.arange(0, 6, 1)) # 给ax2添加设置 ax2.set_xticks(np.arange(0, 6, 1))
np.arange(0,6,1)会生成[0,1,2,3,4,5]的刻度序列,刚好匹配你需要的0到5间隔1的显示需求。
方法2:使用刻度定位器自动按间隔生成(适合范围可变的灵活场景)
如果后续你的X轴范围可能调整,不想每次手动修改刻度列表,可以用MultipleLocator指定刻度间隔:
首先导入对应模块:
import matplotlib.ticker as ticker
然后在每个子图配置中添加:
# 设置X轴主刻度间隔为1 ax1.xaxis.set_major_locator(ticker.MultipleLocator(1)) ax2.xaxis.set_major_locator(ticker.MultipleLocator(1))
这种方法会自动根据你X轴的数值范围,按间隔1生成所有刻度,不需要手动指定起止值。
修改后的完整代码示例
import matplotlib.pyplot as plt import numpy as np delta = 0.0001 t = np.arange(0,5+delta,delta) xt = np.sin(np.pi*t) fig = plt.figure(1) ax1= plt.subplot(3,2,1) ax1.plot(t,xt, "tab:red") ax1.set(ylabel = "Amplitude") ax1.set(xlabel = 'Time(s)') ax1.set(title = 'for n = 1') ax1.grid() # 新增X轴刻度设置 ax1.set_xticks(np.arange(0, 6, 1)) ax2 = plt.subplot(3,2,2) ax2.plot(t,xt, "tab:green") ax2.set(ylabel = "Amplitude") ax2.set(xlabel = 'Time(s)') ax2.set(title = 'for n = 2') ax2.grid() # 新增X轴刻度设置 ax2.set_xticks(np.arange(0, 6, 1)) plt.tight_layout() plt.show()
内容的提问来源于stack exchange,提问作者MolliMm
相关产品推荐
相关产品推荐

