Я не могу получить никаких отметок, если у меня есть узкий диапазон данных и форматирование журнала. Я нашел похожую проблему , в которой говорилось о форсировании минимального количества тактов, и попробовал это решение, но, похоже, это не помогло.
То, что я хочу сделать, - это автоматически расширить диапазон Y до тех пор, пока не будет включено по крайней мере два тика, включая один основной тик (поэтому он получает метку). Я не могу ничего сделать с ручным или пользовательским режимом, потому что через эту процедуру проходит много разных данных, и лишь в редких случаях диапазон настолько узок, что никаких меток не появляется.
Вот пример, который сохраняет как можно больше моего локального окружения:
import matplotlib
import numpy as np
import pylab as plt
fig=plt.figure(figsize=(15, 20))
locmin = matplotlib.ticker.LogLocator(base=10.0,subs=(.1,.2,.3,.4,.5,.6,.7,.8,.9),numticks=15)
ax6 = plt.subplot(616)
plt.plot(np.random.random(1000)*4+14, 'b')
plt.plot(np.random.random(1000)*4+14, 'r')
plt.minorticks_on()
plt.ylabel('Y')
plt.yscale('log')
ax6.yaxis.set_minor_locator(locmin)
ax6.yaxis.set_minor_formatter(matplotlib.ticker.NullFormatter())
plt.show()
В результате получается этот график, на котором нет меток Y ...