Фигура Python и объект осей

У меня большой нерешенный вопрос о matplotlib Модуль Python.

Если я создаю фигуру под названием [Figure1]с 2 осями [Ax1, Ax2]и другая фигура [Figure2]есть ли функция или метод, который позволит мне экспортировать Ax1 объект из Figure1 и перерисовать его Figure2 объект?

1 ответ

Решение

Вообще оси привязаны к фигуре. Причина в том, что matplotlib обычно выполняет некоторые операции в фоновом режиме, чтобы они хорошо выглядели на рисунке.

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

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

Вы всегда можете определить функцию, которая выполняет черчение, и использовать ее на нескольких фигурах, например:

import matplotlib.pyplot as plt

def plot1(ax,  **kwargs):
    x = range(5)
    y = [5,4,5,1,2]
    ax.plot(x,y, c=kwargs.get("c", "r"))
    ax.set_xlim((0,5))
    ax.set_title(kwargs.get("title", "Some title"))
    # do some more specific stuff with your axes

#create a figure    
fig, (ax1, ax2) = plt.subplots(1,2)
# add the same plot to it twice
plot1(ax1)
plot1(ax2, c="b", title="Some other title")
plt.savefig(__file__+".png")

plt.close("all")

# add the same plot to a different figure
fig, ax1 = plt.subplots(1,1)
plot1(ax1)
plt.show()
Другие вопросы по тегам