Matplotlib: как установить текущую цифру?

83

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

import matplotlib
import pylab as pl

f1 = pl.figure()
f2 = pl.figure()

и может использовать интерфейс pyplot, подобный MATLAB, для построения и рисования на обоих рисунках. С участием

current_figure = pl.gcf()

Я могу определить текущую активную фигуру для интерфейса pyplot, в зависимости от того, на какой фигуре я щелкнул мышью. Теперь я хочу нарисовать что-то на первой фигуре с помощью интерфейса pyplot, но текущая фигура может быть любой из них. Так есть что-то вроде

pl.set_current_figure(figure)

или какое-либо обходное решение? (Я знаю, что могу использовать объектно-ориентированный интерфейс, но для интерактивных вещей использование таких команд, как plot (x, y), намного лучше)

Александр
источник

Ответы:

96

Вы можете просто установить фигуру f1как новую текущую фигуру с помощью:

pl.figure(f1.number)

Другой вариант - давать имена (или числа) цифрам, чтобы облегчить чтение кода:

pl.figure("Share values")
# ... some plots ...
pl.figure("Profits")
# ... some plots ...

pl.figure("Share values")  # Selects the first figure again

Фактически, цифры могут быть строками, которые, возможно, более явны, чем простые числа.

PS : pyplot эквивалент pylab.figure()IS matplotlib.pyplot.figure().

Эрик О Лебигот
источник
2
Есть ли хороший способ сделать это, используя matplotlib.figure.Figure вместо pylab ??
Tylerthemiler
@tylerthemiler: Да, но это так matplotlib.pyplot.figure().
Эрик О Лебигот
Если вы хотите сделать то же самое с осями, просто используйте pylab.sca(my_axis)(«установить текущую ось»).
PiHalbe
14

Дайте каждой фигуре номер:

f1 = pl.figure(1)
f2 = pl.figure(2)
# use f2
pl.figure(1) # make f1 active again
Хоа Лонг Там
источник