Вы должны указать точные места, где вы хотите, чтобы сетки использовали вызов ax.set_xticks
, а затем указать точные числа, которые вы хотите на оси, используя вызов ax.set_xticklabels
.
Я строю несколько двух случайных массивов в следующем примере:
plt.rc('text', usetex=True)
plt.rc('font', family='serif')
y1 = np.random.random(10)
y2 = np.random.random(10)
fig, ax = plt.subplots(ncols=2, figsize=(8, 3))
# equivalent to your figure
ax[0].plot(y1, 'o-')
ax[0].plot(y2, 'o-')
ax[0].grid(True, linestyle='--')
ax[0].set_title('Before')
# hopefully what you want
ax[1].plot(y1, 'o-')
ax[1].plot(y2, 'o-')
ax[1].set_title('After')
ax[1].set_xticks(range(0, len(y1)))
ax[1].set_xticklabels(range(1, len(y1)+1))
ax[1].grid(True, linestyle='--')
plt.show()
Это вывод:
Примечание:Глядя на ваш график, кажется, что фактическая ось x не является целым числом, но вы хотите, чтобы целые числа начинались с 1. Вероятно, лучший способ сделать это - просто передать массив данных оси y в качестве аргумента для команды plot (plt.plot(y)
вместо plt.plot(x, y)
, как я делал выше. Вам следует решить, подходит ли это для вашего случая.