Использование yticks и ylim в логарифмическом pyplot - PullRequest
2 голосов
/ 13 июня 2019

У меня возникли проблемы с использованием ylim и yticks в pyplot с лог-масштабами. Смотрите вывод следующего фрагмента кода:

импорт numpy как np из matplotlib import pyplot as plt

plt.figure(figsize=(5, 3))
x = np.linspace(0, 1, 101)
y = np.exp(-5*x)
plt.plot(x, y, 'o', c=blue, markersize=4)
plt.yscale('log')
plt.yticks([10**-1, 1/np.e, 10**0], [r'$10^{-1}$', r'$1/e$', r'$10^0$'])
plt.ylim(10**-1,10**0)

Это дает

enter image description here

Очевидно, что тиков больше, чем я указал. Однако если я не использую ylim или yscale, отображаются правильные 3 галочки. Использование semilogy приводит к той же проблеме. Кто-нибудь сталкивался с этим раньше, и кто-нибудь знает обходной путь? Это для matplotlib 3.1, но это также произошло в 3.0 (с которого я только что обновился).

1 Ответ

1 голос
/ 13 июня 2019

То, что вы видите, это, по сути, второстепенные ярлыки. Причина, по которой я думаю, что они появляются после установки ограничений, заключается в том, что вы как бы увеличиваете изображение в небольшом диапазоне. Простой обходной путь состоит в том, чтобы скрыть метки второстепенных тиков. Для доступа к ним я использую объект оси ax

fig, ax = plt.subplots(figsize=(5, 3)) # <--- Define an axis object
x = np.linspace(0, 1, 101)
y = np.exp(-5*x)
plt.plot(x, y, 'o', c='blue', markersize=4)
plt.yscale('log')

plt.ylim(10**-1,10**0)
plt.setp(ax.get_yminorticklabels(), visible=False) # <--- Hide the minors
plt.yticks([10**-1, 1/np.e, 10**0], [r'$10^{-1}$', r'$1/e$', r'$10^0$']);

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...