如何解决为什么每次更新图像数组时matplotlib都会创建一个新栏
我想使用pyqt5 GUI显示灰度图像并连续更新图像显示,但是matplotlib
每次更新显示时都会创建一个新的颜色栏。
下面是代码。
from PyQt5.QtWidgets import*
from matplotlib.backends.backend_qt5agg import FigureCanvas
from matplotlib.figure import Figure
class MplWidget(QWidget):
def __init__(self,parent = None):
QWidget.__init__(self,parent)
self.canvas = FigureCanvas(Figure())
vertical_layout = QVBoxLayout()
vertical_layout.addWidget(self.canvas)
self.canvas.axes = self.canvas.figure.add_subplot(111)
self.setLayout(vertical_layout)
from PyQt5.QtWidgets import*
from PyQt5.uic import loadUi
from matplotlib.backends.backend_qt5agg import (NavigationToolbar2QT as NavigationToolbar)
import numpy as np
import random
class MatplotlibWidget(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
loadUi("display_test.ui",self)
self.pushButton_2.clicked.connect(self.update)
self.addToolBar(NavigationToolbar(self.MplWidget.canvas,self))
data = np.random.rand(512,512)
self.MplWidget.canvas.axes.clear()
self.d = self.MplWidget.canvas.axes.imshow(data,cmap="gray",norm=None)#,vmin=-1.2,vmax=1.2,interpolation='none')
self.MplWidget.canvas.figure.colorbar(self.d)
self.MplWidget.canvas.draw()
def update(self):
data = np.random.randint(0,1024,(512,512))
self.MplWidget.canvas.axes.clear()
self.d = self.MplWidget.canvas.axes.imshow(data,norm=None)
self.MplWidget.canvas.figure.colorbar(self.d)
self.MplWidget.canvas.draw()
app = QApplication([])
window = MatplotlibWidget()
window.show()
app.exec_()
如果更新功能中没有self.MplWidget.canvas.axes.clear()
,则更新时图像显示比例不会改变,并且高价值图像看起来会饱和,全是白色。
如果我没有在更新功能中添加self.MplWidget.canvas.figure.colorbar(self.d)
,那么颜色栏将保持不变。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。