Python 将Matplotlib绘图作为QGraphicsSitem/放入QGraphicsView
因此,我有一个非常基本的绘图布局,如下所述(为了简洁起见,更改了x和y值):Python 将Matplotlib绘图作为QGraphicsSitem/放入QGraphicsView,python,matplotlib,pyqt,Python,Matplotlib,Pyqt,因此,我有一个非常基本的绘图布局,如下所述(为了简洁起见,更改了x和y值): 我在QT designer中设计了一个GUI,它有一个GraphicsView(名为GraphicsView_Plot),我想把这个图放到其中,我想知道如何把这个图放到GraphicsView中。除非重新开始并使用基于QT的绘图功能,否则我真的不知道如何(如果可能的话)将matplotlib绘图放到这个图形视图中。我知道如果我也能将其转换为QGraphicsView,这将是一件非常简单的事情,因此直接将其放入Graph
我在QT designer中设计了一个GUI,它有一个GraphicsView(名为GraphicsView_Plot),我想把这个图放到其中,我想知道如何把这个图放到GraphicsView中。除非重新开始并使用基于QT的绘图功能,否则我真的不知道如何(如果可能的话)将matplotlib绘图放到这个图形视图中。我知道如果我也能将其转换为QGraphicsView,这将是一件非常简单的事情,因此直接将其放入GraphicsView或将其转换为QGraphicsItem对我来说都是可行的。您必须使用一个画布,它是一个QWidget,可以渲染matplotlib指令,然后使用
addWidget()将其添加到场景中
方法(或通过QGraphicsProxyWidget):
导入系统
从PyQt5导入QtWidgets
从matplotlib.figure导入图形
从matplotlib.backends.backend_qt5agg导入FigureCanvas qtagg as FigureCanvas
将numpy作为np导入
如果名称=“\uuuuu main\uuuuuuuu”:
app=qtwidts.QApplication(sys.argv)
scene=qtwidts.qgraphicscene()
view=QtWidgets.QGraphicsView(场景)
图=图()
轴=图.gca()
轴。设置标题(“我的绘图”)
x=np.linspace(1,10)
y=np.linspace(1,10)
y1=np.linspace(11,20)
坐标轴绘图(x,y,“-k”,label=“第一个”)
坐标轴绘图(x,y1,“-b”,标签=“第二个”)
轴。图例()
轴网格(真)
画布=图画布(图)
proxy\u widget=scene.addWidget(画布)
#或
#proxy_widget=qtwidts.QGraphicsProxyWidget()
#代理_widget.setWidget(画布)
#scene.addItem(代理_小部件)
查看。调整大小(640480)
view.show()
sys.exit(app.exec_())
将Matplotlib的画布(它本身就是一个小部件)嵌入到Qt应用程序中可能更容易—请看示例代码。
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)