Установка активной подзадачи с использованием объекта 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 для фактического построения графика.
Ответы
Ответ 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()