关于matplotlib图像在 FigureCanvasQTAgg窗口中显示不全的问题!

matplotlib图像在 FigureCanvasQTAgg窗口中显示不全的问题
初次显示

img

分辨率调大重新绘制后就会超出FigureCanvasQTAgg边框

img

分辨率调小重新绘制就只在左上角

img

但是只要一拖改变窗口大小,图片就会自适应大小

img

所以有没有办法设置重绘的时候就直接自适应窗口显示?

该回答引用GPTᴼᴾᴱᴺᴬᴵ
您可以在绘制完图像后,调用tight_layout()方法来自动调整子图参数,使得图像适应 FigureCanvasQTAgg 窗口大小。示例代码如下:

import matplotlib.pyplot as plt
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from PyQt5.QtWidgets import QMainWindow, QApplication, QVBoxLayout, QWidget

class MyMainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle("Matplotlib Example")
        self.setGeometry(100, 100, 800, 600)

        # 创建一个QWidget作为主窗口的中心控件
        central_widget = QWidget(self)
        self.setCentralWidget(central_widget)

        # 创建一个绘图区域,并添加到QWidget中
        fig, ax = plt.subplots()
        ax.plot([1, 2, 3], [2, 4, 3])
        canvas = FigureCanvas(fig)
        layout = QVBoxLayout(central_widget)
        layout.addWidget(canvas)

        # 自适应窗口大小显示
        fig.tight_layout()

if __name__ == '__main__':
    app = QApplication([])
    win = MyMainWindow()
    win.show()
    app.exec_()

这样绘制出的图像将会自动适应窗口大小,并且当窗口大小改变时,图像也会自动调整大小。