gpt4 book ai didi

python - 将 Matplotlib 图作为 QGraphicsItem/放入 QGraphicsView

转载 作者:行者123 更新时间:2023-12-04 10:07:05 24 4
gpt4 key购买 nike

因此,我有一个非常基本的绘图布局如下所述(为了简洁起见,更改了 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 绘图放入此图形 View 中。我知道如果我也可以将其转换为 QGraphicsItem,那将是一件非常简单的事情,因此直接将其放入 GraphicsView 或将其转换为 QGraphicsItem 都对我有用。

最佳答案

您必须使用作为 QWidget 的 Canvas 来渲染 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_())

enter image description here

关于python - 将 Matplotlib 图作为 QGraphicsItem/放入 QGraphicsView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61530741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com