Python не позволяет мне изменять количество тактов оси при использовании подзаговоров - PullRequest
1 голос
/ 20 февраля 2020

У меня есть код, который выглядит следующим образом:

plt.figure()

plt.subplot(211)
plt.plot(timestamps_SW, np.random.randn(len(testLabelsSW_ds)), label='truth')
plt.plot(timestamps_SW, np.random.randn(len(testLabelsSW_ds)), label='pred.')
plt.locator_params(axis='y', nbins=5)
plt.legend()

plt.subplot(212)
plt.plot(timestamps_SE,np.random.randn(len(testLabelsSE_ds)), label='truth')
plt.plot(timestamps_SE,np.random.randn(len(testLabelsSE_ds)), label='pred.')
plt.locator_params(axis='y', nbins=5)
plt.legend()

Полученный график выглядит так:

[1]: https://i.stack.imgur.com/JsYKw.png

Ясно каждый Ось у не имеет 5 тиков. Как мне исправить?

1 Ответ

1 голос
/ 20 февраля 2020

Используя plt.locator_params(..., nbins=5), вы запрашиваете локатор по умолчанию, чтобы использовать 5 корзин. По умолчанию используется локатор AutoLocator. Это подкласс MaxNLocator. MaxN означает, что он попытается найти максимум N хороших мест, где N равно nbins + 1. «Хорошие» местоположения означают, например, что-то вроде 1.0, 0.25 и c считаются «хорошими», в то время как что-то вроде 0.761, конечно, не так приятно.

Два ограничения (a) «nice» и (b) «N location», конечно, редко выполняются одновременно. Поэтому «хороший» имеет приоритет здесь.

Если вы пропустите ограничение (a), вы можете получить N местоположений, просто поместив галочки вручную,

plt.yticks(np.linspace(*plt.ylim(), 5))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...