Как исключить фигуру matplotlib из вызова show ()? - PullRequest
0 голосов
/ 31 января 2020

У меня есть класс, который владеет некоторыми фигурами Matplotlib, топорами, художниками и т. Д. c. У него есть функции для манипулирования ими и их отображения, которые отлично работают при работе с экземплярами класса.

Однако, если пользователь хочет создать несколько отдельных графиков matplotlib, скажем, в другой ячейке блокнота, которая содержит экземпляры моего класса, все цифры класса отображаются, когда пользователь вызывает plt.show () для отображения своих собственных фигур.

Я использую ipympl, %matplotlib widget и устанавливаю plt.ioff ().

Есть ли способ настроить мои фигуры так, чтобы они не отображались при вызове plt.show ()?

Пример: рассмотрим эти две ячейки Jupyter Notebook (их нужно разделить для первая цифра для отображения)

%matplotlib widget
import matplotlib.pyplot as plt
plt.ioff()

class interactiveplot(object):
    def __init__(self, x, y):
        plt.ioff()
        self.fig,self.ax = plt.subplots(figsize=(2,2))
        self.plot, = self.ax.plot(x,y)
    def update(self,x,y):
        self.plot.set_data(x,y)
        self.fig.canvas.draw()
    def show(self):
        return self.fig.canvas

#create class instance
test = interactiveplot([1,2,3,4],[4,1,5,7])
#display figure
test.show()
#Change data in displayed figure
test.update([2,3],[6,5])

#display a plot of something totally unrelated
fig,ax = plt.subplots(figsize=(2,2))
ax.scatter([2.3,3.4],[34,23])
plt.show()
#Both test.fig and fig are displayed!  I only want to see fig!
...