python – Matplotlib图没有更新数据更改
发布时间:2020-12-20 11:43:39 所属栏目:Python 来源:网络整理
导读:我正在使用matplotlib实现一个图像查看器.这个想法是对图像进行的更改(例如过滤器应用程序)将自动更新. 我创建了一个图来显示初始图像,并使用pyQt添加了一个按钮来更新数据.数据确实发生了变化,我已经检查过,但图中没有.但是,如果在我按下过滤器应用程序按钮
我正在使用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(). 无论如何,最好使用pl.c.vas()的fig.canvas.draw(),因为很清楚你正在绘制哪个数字(前者绘制一个,后者绘制全部,但只有当它们被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() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |