Решение ОП:
Построить фиктивную кривую и установить alpha=0
.Убедитесь, что кривая охватывает y_min и y_max.
fig = plt.figure()
axes = [1,2,3,4]
for axis in axes:
ax = fig.add_subplot(2,2, axis)
ax2 = ax.twinx()
ax2.set_yscale('log')
ax2.plot(x_dummy, y_dummy, alpha=0) # <-- dummy plot
x_real, y_real = func_that_loads_data() # <-- your interesting plot
curve1 = ax2.plot(x_real, y_real)
plt.show()
Решение, предоставленное Шелдором, было непрактичным для реализации, потому что я строю свои данные, используя цикл for (неизбежно, если я не увеличу количество переменных).
Поскольку я перезаписываю переменную ax
на каждой итерации, мне придется сохранять предел по оси y как глобальную переменную. Прочтите здесь, почему следует избегать глобальных переменных.
ax = fig.add_subplot(2,2, axis)
ax2 = ax.twinx()
ax2.set_yscale('log')
if axis == 1:
global yscale
yscale = ax2.get_ylim() # <-- where the magic happens
elif axis > 1:
ax2.set_ylim(yscale)