[英]Matplotlib figure not updating on data change
我正在使用matplotlib
實現一個圖像查看器。 這個想法是對圖像進行的更改(例如過濾器應用程序)將自動更新。
我創建了一個圖來顯示初始圖像,並使用pyQt
添加了一個按鈕來更新數據。 數據確實發生了變化,我已經檢查過,但圖中沒有。 但是 ,如果在我按下過濾器應用程序按鈕后,我使用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狀態機的一部分。 plt.draw()
不會繪制這個數字,因為plt
不知道該數字是否存在。
請改用fig.canvas.draw()
。
無論如何,最好使用fig.canvas.draw()
plt.draw()
,因為很清楚你正在繪制哪個數字(前者繪制一個,后者繪制全部,但只有當它們被pyplot
跟蹤pyplot
) 。
嘗試這些方面的東西:
import numpy as np
import matplotlib.pyplot as plt
data = np.random.random((10,10))
# To make a standalone example, I'm skipping initializing the
# `Figure` and `FigureCanvas` and using `plt.figure()` instead...
# `plt.draw()` would work for this figure, but the rest is identical.
fig, ax = plt.subplots()
ax.set(title='Click to update the data')
im = ax.imshow(data)
def update(event):
im.set_data(np.random.random((10,10)))
fig.canvas.draw()
fig.canvas.mpl_connect('button_press_event', update)
plt.show()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.