簡體   English   中英

如何使用PySide2在matplotlib中顯示圖形?

[英]How do you display a figure in matplotlib using PySide2?

我正在嘗試學習matplotlib,並嘗試測試以下代碼。

import matplotlib
from matplotlib.figure import Figure  
import matplotlib
from matplotlib.figure import Figure
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as     FigureCanvas
import sys
from PySide2 import QtGui   

if __name__ == "__main__":

    app = QtGui.QApplication(sys.argv)
    wid = QtGui.QWidget()
    wid.resize(250, 150)
    grid = QtGui.QGridLayout()
    wid.setLayout(grid)
    fig = Figure(figsize=(7,5), dpi=65, facecolor=(1,1,1), edgecolor=(0,0,0))
    canvas = FigureCanvas(fig)
    grid.addWidget(canvas)
    wid.show()

但是,似乎無法識別Figure的簽名。

TypeError:“ PySide2.QtGui.QGridLayout.addWidget”以錯誤的參數類型調用:
PySide2.QtGui.QGridLayout.addWidget(FigureCanvasQTAgg)支持的簽名:
PySide2.QtGui.QGridLayout.addWidget(PySide2.QtGui.QWidget,int,int,PySide2.QtCore.Qt.Alignment = 0)
PySide2.QtGui.QGridLayout.addWidget(PySide2.QtGui.QWidget,int,int,int,int,PySide2.QtCore.Qt.Alignment = 0)

PySide2是Qt5的綁定,因此,您必須使用backend_qt5agg而不是backend_qt4agg ,另一方面,建議在matplotlib之前導入后端(在這種情況下為PySide2),以便matplotlib在內部配置它,除了QApplication,QWidget和QGridLayout屬於由於Qt5將它們與QtGui分開,因此將其添加到QtWidgets中。最后,當您將部件添加到QGridLayout時,必須在以下參數中指示其位置。

考慮到上述解決方案是

import sys

from PySide2 import QtWidgets
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure


if __name__ == "__main__":

    app = QtWidgets.QApplication(sys.argv)
    wid = QtWidgets.QWidget()
    wid.resize(250, 150)
    grid = QtWidgets.QGridLayout(wid)
    fig = Figure(figsize=(7, 5), dpi=65, facecolor=(1, 1, 1), edgecolor=(0, 0, 0))
    canvas = FigureCanvas(fig)
    grid.addWidget(canvas, 0, 0)
    wid.show()
    sys.exit(app.exec_())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM