Подтвердить что ты не робот

Установка активной подзадачи с использованием объекта axes в matplotlib?

Объектно-ориентированный интерфейс subplots matplotlib хорош, но мне сложно использовать его при вызове функции, содержащей строки типа plt.plot(x, y). Эти функции работают с plt.subplot() легко, но возможно ли установить активный подзаговор с данным объектом осей? В частности, я хочу, чтобы что-то вроде следующего, чтобы нанести на две отдельные подзаголовки:

import matplotlib.pyplot as plt

x = [0 ,1, 2]
y= [0 ,1 2]

fig, axs = plt.subplots(2,1)

plt.some_function_to_set_active_subplot(axs[0])
plt.plot(x, y)

plt.some_function_to_set_active_subplot(axs[1])
plt.plot(x, y)

Существует ли такая функция some_function_to_set_active_subplot?

Изменение: я специально не могу использовать ax.plot или что-то в этом роде. Я в основном спрашиваю о том, как смешивать объектно-ориентированный интерфейс с интерфейсом стиля matlab.

Изменить 2: я не хочу использовать plt.subplot. Я хочу использовать интерфейс OO для настройки подзаголовков и стиль matlab для фактического построения графика.

4b9b3361

Ответ 1

Вы можете использовать plt.axes для установки текущих активных осей. Из документации: "оси (h), где h является экземпляром осей, делает h текущей осью".

import matplotlib.pyplot as plt

x = [0 ,1, 2]
y = [10 ,20, 30]

fig, axs = plt.subplots(2,1)

plt.axes(axs[0])
plt.plot(x,y)
plt.axes(axs[1])
plt.plot(y,x)
plt.show()

Ответ 2

Метод plt.axes не рекомендуется для этого использования. plt.sca этого используйте plt.sca. Следуя примеру выше:

import matplotlib.pyplot as plt

x = [0 ,1, 2]
y = [10 ,20, 30]

fig, axs = plt.subplots(2,1)

plt.sca(axs[0])
plt.plot(x,y)
plt.sca(axs[1])
plt.plot(y,x)
plt.show()