为什么每次更新图像数组时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),那么颜色栏将保持不变。

图像显示了问题。

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...