[英]mplot3d in wxPython frame
我正在用wxPython編寫應用程序。 按鈕“繪圖”顯示具有3D曲面的wxFrame,但是我無法旋轉該曲面。 是否可以旋轉放置在wxFrame中的3D圖? 我能怎么做?
例:
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()
您最好向wxPython的Google小組詢問,因為我看到有人在那里使用matplotlib。 無論如何,查看matplotlib網站,似乎有一個wxMpl模塊可能會有所幫助: http ://agni.phys.iit.edu/~kmcivor/wxmpl/
我的猜測是,如果matplotlib可以在wx之外旋轉繪圖,那么您只需要將一些事件從wx傳遞到matplotlib,以使其在wx內工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.