因此,我有一个非常基本的绘图布局,如下所述(为简洁起见,更改了 x 和 y 值):
import matplotlib.pyplot as plt
from matplotlib.figure import Figure
import numpy as np
figure = Figure()
axes = figure.gca()
axes.set_title(‘My Plot’)
x=np.linspace(1,10)
y=np.linspace(1,10)
y1=np.linspace(11,20)
axes.plot(x,y,’-k’,label=‘first one’)
axes.plot(x,y1,’-b’,label=‘second one’)
axes.legend()
axes.grid(True)
我在QT设计器中设计了一个GUI,它有一个GraphicsView(名为graphicsView_Plot),我想将这个图形放入其中,并且我想知道如何将此图形放入GraphicsView中。除非重新开始并使用基于 QT 的绘图功能,否则我真的不知道如何(如果可能的话)将 matplotlib 图放入此图形视图中。我知道如果我也可以将其转换为 QGraphicsItem,那将是一件非常简单的事情,因此直接将其放入 GraphicsView 或将其转换为 QGraphicsItem 对我来说都可以。
您必须使用作为 QWidget 的画布来呈现 matplotlib 指令,然后使用将其添加到场景中addWidget()
方法(或通过 QGraphicsProxyWidget):
import sys
from PyQt5 import QtWidgets
from matplotlib.figure import Figure
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
import numpy as np
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
scene = QtWidgets.QGraphicsScene()
view = QtWidgets.QGraphicsView(scene)
figure = Figure()
axes = figure.gca()
axes.set_title("My Plot")
x = np.linspace(1, 10)
y = np.linspace(1, 10)
y1 = np.linspace(11, 20)
axes.plot(x, y, "-k", label="first one")
axes.plot(x, y1, "-b", label="second one")
axes.legend()
axes.grid(True)
canvas = FigureCanvas(figure)
proxy_widget = scene.addWidget(canvas)
# or
# proxy_widget = QtWidgets.QGraphicsProxyWidget()
# proxy_widget.setWidget(canvas)
# scene.addItem(proxy_widget)
view.resize(640, 480)
view.show()
sys.exit(app.exec_())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)