ylabel используя функцию subplots в matplotlib - PullRequest
2 голосов
/ 23 февраля 2012

Недавно я обнаружил вспомогательные сюжеты функций, которые, кажется, являются более элегантным способом настройки нескольких вспомогательных сюжетов, чем вспомогательных.Однако мне кажется, что я не могу изменить свойства осей для каждого участка.

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as npx = np.linspace(0, 20, 100)

fig, axes = plt.subplots(nrows=2)

for i in range(10):
    axes[0].plot(x, i * (x - 10)**2)
    plt.ylabel('plot 1')

for i in range(10):
    axes[1].plot(x, i * np.cos(x))
    plt.ylabel('plot 2')

plt.show()

Отображается только метка для последнего графика.То же самое происходит с xlabel, xlim и ylim.

Я понимаю, что смысл использования вспомогательных участков заключается в создании общих макетов вспомогательных участков, но если для sharex и sharey задано значение false, то я не смогуизменить некоторые параметры?

Одним из решений будет использование вместо этого функции subplot, но нужно ли это делать?

1 Ответ

2 голосов
/ 23 февраля 2012

Да Вы вероятно хотите использовать отдельные экземпляры подзаговора.

Как вы обнаружили, plt.ylabel устанавливает ylabel последнего активного графика. Чтобы изменить параметры отдельного Axes, то есть субплота, вы можете использовать любым из доступных методов . Чтобы изменить ylabel, вы можете использовать axes[0].set_ylabel('plot 1').

pyplot или plt, как вы его определили, является вспомогательным модулем для быстрого доступа к методам Axes и Figure без необходимости сохранять эти объекты в переменных. Как гласит документация :

[Pyplot p] предоставляет матричный каркас, похожий на MATLAB.

Вы все еще можете использовать этот интерфейс, но вам нужно будет настроить, какой Axes является активным в данный момент Axes. Для этого pyplot имеет метод axes(h), где h является экземпляром Axes. Итак, в вашем примере вы бы позвонили plt.axes(axes[0]), чтобы активировать первый субплот, а затем plt.axes(axes[1]), чтобы установить другой.

...