如何使用 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' called with wrong
argument types:
PySide2.QtGui.QGridLayout.addWidget(FigureCanvasQTAgg) Supported
signatures:
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属于QtWidgets,因为Qt5将它们从QtGui中分离出来,最后当你添加一个widget到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_())
我正在尝试学习 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' called with wrong argument types:
PySide2.QtGui.QGridLayout.addWidget(FigureCanvasQTAgg) Supported signatures:
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属于QtWidgets,因为Qt5将它们从QtGui中分离出来,最后当你添加一个widget到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_())