«Фигуры» за кулисами
Каждый раз, когда вы вызываете plt.subplots(), или реже используемую plt.figure() (которая создает объект Figure без объектов Axes), вы создаете новый объект Figure, который matplotlib по хитрому хранит в памяти. Ранее, мы упоминали концепцию текущего объекта Figure и Axes. По умолчанию, такие объекты Figure и Axes создаются чаще всего, это мы можем продемонстрировать при помощи встроенной функции id(), чтобы показать адрес объекта в памяти:
Python
1
2
3
4
5
6
7
8
9
10
11
12
|
import matplotlib.pyplot as plt
fig1, ax1 = plt.subplots()
# fig1– это текущая фигура.
print(id(fig1)) # 4525567840
print(id(plt.gcf())) # 4525567840
# текущая фигура была изменена на fig2.
fig2, ax2 = plt.subplots()
print(id(fig2) == id(plt.gcf())) # True
|
(Мы также можем использовать встроенный оператор is в этом коде)
После показанной только что рутины, текущая фигура называется fig2, и является фигурой, которая создается чаще всего. Однако, обе фигуры висят в памяти, и обе носят соответствующий номер ID (с одним индексом, в духе MATLAB):
Python
1
|
print(plt.get_fignums()) # [1, 2]
|
Python
1
2
3
4
|
def get_all_figures():
return [plt.figure(i) for i in plt.get_fignums()]
print(get_all_figures())
|
Результат:
Python
Достарыңызбен бөлісу: |