【发布时间】:2018-01-14 11:17:13
【问题描述】:
我正在使用 Qt Designer 和 matplotlib 进行绘图。
到目前为止,我已将 Qwidget 提升为 Canvas 类,并通过创建轴并使用 figure.add_subplot() 绘制它们来在其上绘制绘图,因此代码如下所示:
ax = self.canvas.figure.add_subplot(111)
ax.plot(data)
self.canvas.draw()
但是现在我有一个图形对象,我需要绘制它。有没有办法在不实例化轴并将它们分配给图形的情况下做到这一点?有没有办法我可以做: “self.canvas.add_figure”?因为在我的情况下,我无法访问轴。
编辑:这是画布的代码。
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
import matplotlib.pyplot as plt
from PyQt4 import QtGui
class Canvas(FigureCanvas):
def __init__(self, parent=None):
self.figure = plt.figure()
FigureCanvas.__init__(self, self.figure)
self.setParent(parent)
FigureCanvas.setSizePolicy(self,
QtGui.QSizePolicy.Expanding,
QtGui.QSizePolicy.Expanding)
FigureCanvas.updateGeometry(self)
【问题讨论】:
-
我认为您使用的画布是一个图形,您可以显示更多代码以更好地理解您,也因为您说您无法访问轴。使用 self.ax = self.canvas.figure.add_subplot(111) 然后 obj.ax.plot() 让它们成为类成员
-
您不能在画布上添加图形。画布只与一个图形相关联,该图形被传递给构造函数。我认为以后无法更改(分配给
self.figure似乎以可怕的方式失败)。
标签: python qt matplotlib pyqt qt-designer