在Qtabwidget(mplwidget)中使用PyQt4进行matplotlib 3D打印
我正在使用PythonXY(2.6和Qt4)开发我的第一个Python应用程序。 我有一个窗口,有一些按钮和一个小部件。 当我按下按钮时,我想在特定选项卡上绘制3D图像。我设法得到了一个二维图,但我不能得到三维轴。 通过Qt desiger,我使用mplwidget。在许多示例中,我看到了figure()的用法,但我无法将其用于mplwidget。(我甚至不确定这是否可能) 你能给我看一个用简单绘图定义3D轴(在QtabWidget中)的代码示例吗在Qtabwidget(mplwidget)中使用PyQt4进行matplotlib 3D打印,3d,matplotlib,pyqt,axes,qtabwidget,3d,Matplotlib,Pyqt,Axes,Qtabwidget,我正在使用PythonXY(2.6和Qt4)开发我的第一个Python应用程序。 我有一个窗口,有一些按钮和一个小部件。 当我按下按钮时,我想在特定选项卡上绘制3D图像。我设法得到了一个二维图,但我不能得到三维轴。 通过Qt desiger,我使用mplwidget。在许多示例中,我看到了figure()的用法,但我无法将其用于mplwidget。(我甚至不确定这是否可能) 你能给我看一个用简单绘图定义3D轴(在QtabWidget中)的代码示例吗 非常感谢在下面的代码中,您应该找到您要查找的内
非常感谢在下面的代码中,您应该找到您要查找的内容(至少在matplotlib 1.0.1和pyqt 4.8中):
然后,您只需将QWidget添加到QtaWidget并将其升级到新类MPPLOT3DVIEW(您将很容易在网上找到有关如何执行此操作的资源)。在下面的代码中,您应该找到您要查找的内容(至少使用matplotlib 1.0.1和pyqt 4.8): 然后,您只需将一个QWidget添加到您的QtaWidget中,并将其升级到新的类MplPlot3dView(您将很容易在网上找到有关如何实现这一点的资源)
class MplPlot3dCanvas(FigureCanvas):
def __init__(self):
self.surfs = [] # [{"xx":,"yy:","val:"}]
self.fig = Figure()
self.fig.suptitle("this is the figure title", fontsize=12)
FigureCanvas.__init__(self, self.fig)
FigureCanvas.setSizePolicy(self,
QSizePolicy.Expanding,
QSizePolicy.Expanding)
FigureCanvas.updateGeometry(self)
self.ax = Axes3D(self.fig) # Canvas figure must be created for mouse rotation
self.ax.set_xlabel('row (m CCD)')
self.ax.set_ylabel('col (m CCD)')
self.ax.set_zlabel('Phi (m)')
self.format_coord_org = self.ax.format_coord
self.ax.format_coord = self.report_pixel
def report_pixel(self, xd, yd):
s = self.format_coord_org(xd, yd)
s = s.replace(",", " ")
return s
def update_view(self):
for plt in self.plots:
# del plt
self.ax.collections.remove(plt)
self.plots = []
for surf in self.surfs:
plt = self.ax.plot_surface(surf["xx"], surf["yy"], surf["val"], rstride=5, cstride=5, cmap=cm.jet, linewidth=1, antialiased=True)
self.plots.append(plt)
self.draw()
class MplPlot3dView(QWidget):
def __init__(self, parent = None):
super(MplPlot3dView, self).__init__(parent)
self.canvas = MplPlot3dCanvas()
self.toolbar = NavigationToolbar(self.canvas, self.canvas)
self.vbox = QVBoxLayout()
self.vbox.addWidget(self.canvas)
self.vbox.addWidget(self.toolbar)
self.setLayout(self.vbox)
self.to_update = False