有沒有辦法保留圖形的交互式導航設置,以便下次更新圖形時Zoom/Pan特性不會恢復爲默認值?更具體地說,如果放大圖形,然後我更新繪圖,是否可以使新圖形以前一個縮放設置相同的方式顯示?我正在使用Tkinter。保存matplotlib交互式導航中的縮放設置圖
回答
您需要更新圖像,而不是每次製作新圖像。舉個例子:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Button
class DummyPlot(object):
def __init__(self):
self.imsize = (10, 10)
self.data = np.random.random(self.imsize)
self.fig, self.ax = plt.subplots()
self.im = self.ax.imshow(self.data)
buttonax = self.fig.add_axes([0.45, 0.9, 0.1, 0.075])
self.button = Button(buttonax, 'Update')
self.button.on_clicked(self.update)
def update(self, event):
self.data += np.random.random(self.imsize) - 0.5
self.im.set_data(self.data)
self.im.set_clim([self.data.min(), self.data.max()])
self.fig.canvas.draw()
def show(self):
plt.show()
p = DummyPlot()
p.show()
如果你想繪製的第一次數據,當你點擊「更新」,一個解決辦法是先繪製虛擬數據,並使其不可見。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Button
class DummyPlot(object):
def __init__(self):
self.imsize = (10, 10)
self.data = np.random.random(self.imsize)
self.fig, self.ax = plt.subplots()
dummy_data = np.zeros(self.imsize)
self.im = self.ax.imshow(dummy_data)
self.im.set_visible(False)
buttonax = self.fig.add_axes([0.45, 0.9, 0.1, 0.075])
self.button = Button(buttonax, 'Update')
self.button.on_clicked(self.update)
def update(self, event):
self.im.set_visible(True)
self.data += np.random.random(self.imsize) - 0.5
self.im.set_data(self.data)
self.im.set_clim([self.data.min(), self.data.max()])
self.fig.canvas.draw()
def show(self):
plt.show()
p = DummyPlot()
p.show()
或者,您可以關閉自動縮放功能,並每次創建一個新圖像。不過,這將會明顯變慢。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Button
class DummyPlot(object):
def __init__(self):
self.imsize = (10, 10)
self.fig, self.ax = plt.subplots()
self.ax.axis([-0.5, self.imsize[1] - 0.5,
self.imsize[0] - 0.5, -0.5])
self.ax.set_aspect(1.0)
self.ax.autoscale(False)
buttonax = self.fig.add_axes([0.45, 0.9, 0.1, 0.075])
self.button = Button(buttonax, 'Update')
self.button.on_clicked(self.update)
def update(self, event):
self.ax.imshow(np.random.random(self.imsize))
self.fig.canvas.draw()
def show(self):
plt.show()
p = DummyPlot()
p.show()
謝謝,它通過一個例子更清晰。我想我的錯誤是,我想能夠使用相同的按鈕創建和更新圖形。換句話說,當程序啓動時,我看不到圖形,當我按下按鈕時會出現這個圖形。再次按下按鈕之後,相同的圖形會更新爲新數據(有時是新軸標籤)。 – maupertius 2012-03-29 14:29:36
在這種情況下,您可以製作帶有虛擬數據的圖像,或者每次製作新圖像但關閉自動縮放。看看這兩個新例子。希望有所幫助! – 2012-03-29 14:51:47
謝謝,這真的有幫助!我想我只需要改變腳本的結構。實際上,當我按下我想用來更新圖形的按鈕時,會創建數字窗口。在你提示我的情況下,在按下按鈕之前已經創建了數字窗口,這就是爲什麼我無法使用'set_data'。隨着你的解決方案的繪圖將更快,但數字窗口必須已經在那裏,當我按下按鈕 – maupertius 2012-03-29 15:09:41
- 1. 保存Axis註釋時交互放大matplotlib底圖圖?
- 2. 交互式縮放渲染圖
- 3. matplotlib中的交互模式
- 4. 縮放導航欄 - 響應式設計
- 5. wxmplot matplotlib wxPython的交互式散點圖
- 6. 使用matplotlib的交互式直方圖?
- 7. matplotlib - 交互式選擇點或位置?
- 8. 交互式保存文件?
- 9. 是否可以爲響應式設計縮放導航圖標?
- 10. 用matplotlib繪製交互式圖像
- 11. 使用泡菜matplotlib交互式圖
- 12. 通過文本框交互式matplotlib圖
- 13. 使用CSS創建交互式(?)導航?
- 14. 在RAW中添加d3.js交互式可縮放樹形圖
- 15. Python Matplotlib事件處理:與平移/縮放交互
- 16. 保存交互繪製開放層
- 17. 如何以編程方式在pyqt/matplotlib導航中選擇平移/縮放
- 18. 在python中以交互方式顯示matplotlib中的圖形
- 19. 保存matplotlib圖
- 20. 在matplotlib圖中交互選擇系列
- 21. 可以交互式縮放和平移Excel圖表嗎?
- 22. 使用雙指縮放(Android)創建交互式地鐵地圖
- 23. 縮放,平移和交互式圖形Android應用程序
- 24. Git - 提交之間的交互式日誌/導航
- 25. Windows上的交互式matplotlib/ipython數字
- 26. 在matplotlib中交互式繪製圖像的平均值
- 27. matplotlib圖中的交互式工具提示
- 28. 嵌入在PyQt中的Matplotlib交互式圖形
- 29. ActionBarCompat:設置導航模式
- 30. 導航突破縮放
我發現了一個名爲'get_navigate_mode()'方法,但我不知道我該如何使用它 – maupertius 2012-03-28 13:16:02
你是如何更新的情節?如果你正確地做到了這一點(例如'line.set_data'),它確實是你想要的... – 2012-03-28 13:21:58
我的情節由我用'imshow()'創建的顏色映射組成。按下按鈕時會出現此圖。爲了更新我的意思是再次按下相同的按鈕。 – maupertius 2012-03-28 13:38:06