matplotlib图像在 FigureCanvasQTAgg窗口中显示不全的问题
初次显示
分辨率调大重新绘制后就会超出FigureCanvasQTAgg边框
分辨率调小重新绘制就只在左上角
但是只要一拖改变窗口大小,图片就会自适应大小
所以有没有办法设置重绘的时候就直接自适应窗口显示?
matplotlib图像在 FigureCanvasQTAgg窗口中显示不全的问题
初次显示
分辨率调大重新绘制后就会超出FigureCanvasQTAgg边框
分辨率调小重新绘制就只在左上角
但是只要一拖改变窗口大小,图片就会自适应大小
所以有没有办法设置重绘的时候就直接自适应窗口显示?
该回答引用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_()
这样绘制出的图像将会自动适应窗口大小,并且当窗口大小改变时,图像也会自动调整大小。