首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wxPython框架中的mplot3d

wxPython框架中的mplot3d
EN

Stack Overflow用户
提问于 2010-07-29 20:13:22
回答 1查看 1.3K关注 0票数 0

我正在用wxPython编写一个应用程序。按钮"Plot“显示了具有3D表面的wxFrame,但我不能旋转表面。是否可以旋转放置在wxFrame中的3D绘图?我该怎么做呢?

示例:

代码语言:javascript
复制
import matplotlib
matplotlib.use('WXAgg')
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
from matplotlib.backends.backend_wx import NavigationToolbar2Wx

import wx

from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt

class CanvasFrame(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self,  None, -1, 'CanvasFrame', size=(550,350))

        self.SetBackgroundColour(wx.NamedColor("WHITE"))

        self.figure = plt.figure()
        self.axes = axes3d.Axes3D(self.figure)
        X, Y, Z = axes3d.get_test_data(0.05)
        self.axes.plot_surface(X, Y, Z, rstride=8, cstride=8, alpha=0.3)
        cset = self.axes.contour(X, Y, Z, zdir='z', offset=-100)
        cset = self.axes.contour(X, Y, Z, zdir='x', offset=-40)
        cset = self.axes.contour(X, Y, Z, zdir='y', offset=40)

        self.canvas = FigureCanvas(self, -1, self.figure)

        self.sizer = wx.BoxSizer(wx.VERTICAL)
        self.sizer.Add(self.canvas, 1, wx.LEFT | wx.TOP | wx.GROW)
        self.SetSizer(self.sizer)
        self.Fit()

        self.add_toolbar()

    def add_toolbar(self):
        self.toolbar = NavigationToolbar2Wx(self.canvas)
        self.toolbar.Realize()
        if wx.Platform == '__WXMAC__':
            self.SetToolBar(self.toolbar)
        else:
            tw, th = self.toolbar.GetSizeTuple()
            fw, fh = self.canvas.GetSizeTuple()
            self.toolbar.SetSize(wx.Size(fw, th))
            self.sizer.Add(self.toolbar, 0, wx.LEFT | wx.EXPAND)
        self.toolbar.update()

    def OnPaint(self, event):
        self.canvas.draw()

class App(wx.App):

    def OnInit(self):
        frame = CanvasFrame()
        frame.Show(True)

        return True

app = App(0)
app.MainLoop()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-29 22:13:49

你最好去wxPython google群上问问,因为我在那里见过使用matplotlib的人。无论如何,查看matplotlib网站,似乎有一个wxMpl模块可能会有所帮助:http://agni.phys.iit.edu/~kmcivor/wxmpl/

我的猜测是,如果matplotlib可以在wx之外旋转绘图,那么您只需要将一些事件从wx传递到matplotlib,就可以使其在wx内工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3362292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档