Я реализую средство просмотра изображений с использованием matplotlib
. Идея состоит в том, что изменения, внесенные в изображение (например, приложение фильтра), будут автоматически обновляться.Рисунок Matplotlib не обновляется при изменении данных
Я создаю рисунок, чтобы показать исходное изображение, и добавил кнопку, используя pyQt
, чтобы обновить данные. Данные делает изменение, я проверил, но на рисунке нет. Однако, если после того, как я нажал кнопку приложения фильтра, I переместите изображение с помощью стандартной панели инструментов matplotlib
, изображение затем обновляется.
Я предполагаю, что я делаю что-то неправильно при обновлении изображения, но поскольку факт его перемещения фактически заставляет обновление, он показывает изменение данных. Я бы хотел, чтобы это произошло, когда я нажимаю кнопку.
Ниже приведен код. Это начальная инициализация цифра, которая показывает исходное изображение:
self.observableFig = Figure((4.0, 4.0), dpi=100)
self.canvas = FigureCanvas(self.observableFig)
self.canvas.setParent(self.observableWindow)
self.canvas.setFocusPolicy(Qt.StrongFocus)
self.canvas.setFocus()
self.canvas.mpl_connect('button_press_event', self.on_click)
# Showing initial data on Window
self.observableFig.clear()
self.observableAxes = self.observableFig.add_subplot(1, 1, 1)
min, max = self.min, self.max
self.observableAxes.imshow(self.data, vmin=min, vmax=max, origin='lower')
И это событие при нажатии на кнопку, которая изменяет данные:
self.observableAxes.imshow(self.data/2, origin='lower')
# plt.clf()
# plt.draw()
# plt.show()
Я попытался draw()
, show()
, в основном все, что я нашел на pyplot
. Я также пробовал как с, так и без plt.ion()
в начале, но это не повлияло на это.
Заранее спасибо.
Спасибо за ваш ответ. Я хотел бы знать, что вы имеете в виду: «последний рисует все, но только если их отслеживают« pyplot », хотя ... есть способ, которым я могу фактически добавить цифры, которые будут отслеживаться« pyplot »? Я предполагаю, что это может быть полезно, когда вы хотите обновить многие цифры. – Francisca
@Fran. «Отслеживается pyplot». Я в основном имею в виду «созданный с использованием' plt.figure() 'или' plt.subplots() '. Это похоже на то, re вставлять matplotlib в какую-то структуру gui? Если это так, вы не хотите, чтобы в этом смысле были обнаружены следы от пиплета. В противном случае у них будут свои собственные окна gui. Если вы не пишете отдельное GUI-приложение, , тогда лучше всего создать фигуры с использованием pyplot именно по той причине, о которой вы только что упоминали. –