在pyQt中的Imshow不是居中的

时间:2018-04-06 08:36:45

标签: python matplotlib pyqt imshow

我编写了一个代码来将一个imshow放在pyqt环境中,但是imshow并没有在图中居中:

from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import numpy as np
import sys
import matplotlib.pyplot as plt
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar


class GenerateCM(QMainWindow):
    def __init__(self, parent=None):
        super(GenerateCM, self).__init__()
        self.CM = np.zeros((10,10))
        #######################################
        self.centralWidget = QWidget()
        self.setCentralWidget(self.centralWidget)
        self.mainHBOX_param_scene = QHBoxLayout()

        #CM view
        layout_plot = QHBoxLayout()
        self.loaded_plot = CMViewer(self)
        self.loaded_plot.setMinimumHeight(200)
        self.loaded_plot.update()
        layout_plot.addWidget(self.loaded_plot)

        self.mainHBOX_param_scene.addLayout(layout_plot)
        self.centralWidget.setLayout(self.mainHBOX_param_scene)

class CMViewer(QGraphicsView):
    def __init__(self, parent=None):
        super(CMViewer, self).__init__(parent)
        self.parent=parent
        self.scene = QGraphicsScene(self)
        self.setScene(self.scene)
        self.figure = plt.figure()
        self.canvas = FigureCanvas(self.figure)
        self.toolbar = NavigationToolbar(self.canvas, self)

        # self.canvas.setGeometry(0, 0, 1600, 500 )
        layout = QVBoxLayout()
        layout.addWidget(self.toolbar)
        layout.addWidget(self.canvas)
        self.setLayout(layout)
        self.canvas.show()


    def update(self):
        self.connectivityMat = self.parent.CM
        self.figure.clear()
        self.axes=self.figure.add_subplot(1,1,1)
        im = self.axes.imshow(self.connectivityMat)
        self.figure.colorbar(im)
        self.axes.axis('off')
        self.axes.set_title('Loaded Matrix')
        self.canvas.draw()
        self.canvas.show()

def main():
    app = QApplication(sys.argv)
    ex = GenerateCM(app )
    ex.show()
    sys.exit(app.exec_( ))


if __name__ == '__main__':
    main()

哪个给我这个结果。 enter image description here

我希望图像位于窗口的中心,而不是像现在这样转移到严谨的位置。我添加一个子图我做错了但我找不到正确的方法将子图正确放在中心

0 个答案:

没有答案