Как построить интерактивное нарисованное изображение с помощью matplotlib в Google Colab? - PullRequest
0 голосов
/ 24 марта 2019

Я пытаюсь построить интерактивное изображение, которое позволит мне рисовать линии на выходе из Google Colab Notebook.Я попытался с помощью приведенного ниже кода.Он отлично работает в моем локальном ноутбуке Jupyter, но не работает в Google colab.

Может кто-нибудь предложить какой-нибудь способ обойти это?

Также попытался добавить %matplotlib inline, но он показал неподвижное изображение.

from matplotlib.lines import Line2D
%pylab notebook 
%matplotlib inline
#This is needed for plot widgets

class Annotator(object):
    def __init__(self, axes):
        self.axes = axes

        self.xdata = []
        self.ydata = []
        self.xy    = []
        self.drawon = False

    def mouse_move(self, event):
        if not event.inaxes:
            return

        x, y = event.xdata, event.ydata
        if self.drawon:
            self.xdata.append(x)
            self.ydata.append(y)
            self.xy.append((int(x),int(y)))
            line = Line2D(self.xdata,self.ydata)
            line.set_color('r')
            self.axes.add_line(line)

            plt.draw()

    def mouse_release(self, event):
        # Erase x and y data for new line
        self.xdata = []
        self.ydata = []
        self.drawon = False

    def mouse_press(self, event):
        self.drawon = True


img = np.zeros((28,28,3),dtype='uint8')

fig, axes = plt.subplots(figsize=(3,3))
axes.imshow(img)
plt.axis("off")
plt.gray()
annotator = Annotator(axes)
plt.connect('motion_notify_event', annotator.mouse_move)
plt.connect('button_release_event', annotator.mouse_release)
plt.connect('button_press_event', annotator.mouse_press)

axes.plot()

plt.show()

Я ожидаю, что в Google Colab выходные данные будут такими же, как в ноутбуке Jupyter на моем ПК, но на выходе все еще изображение и ничто не может быть нарисовано поверх него.

1 Ответ

0 голосов
/ 18 июня 2019

Сначала вам нужно смонтировать colab с каталогом в Google Drive. Вы можете попробовать:

fig = plt.figure()
fig.savefig("your_file_name.png")

from IPython.display import Image
Image("your_file_name.png")
...