2011-12-12 49 views

回答

1

任何時候你打電話給Axes3D.clear()之類的東西,然後再次啓用鼠標旋轉,你必須撥打Axes3D.mouse_init()

似乎沒有證件,但它適用於我! Source

+0

感謝您的提示,它確實工作得很好! – Kevin

0

我有同樣的問題,深入調試後解決它。問題是畫布實例的不一致。示例代碼首先構造一個自動爲該圖形提供canvas實例的圖形。然後軸將被添加到圖中,然後將圖的畫布替換爲可用作QWidget的另一個畫布。

但是,Axes3D構造函數將回調函數添加到其圖的畫布以實現旋轉特徵。因此,如果畫布在此之後被替換,則與旋轉函數的連接會丟失。

也許在將圖形添加到軸之前簡單地調用FigureCanvas.__init__()就足夠了,但我還沒有嘗試過。

我的工作解決方案有點不同:首先我撥打matplotlib.use("Qt4Agg")來設置正確的後端。接下來,我構建了數字fig = matplotlib.pyplot.figure(),確保他們已經包含正確的畫布,然後將Axes3D添加到他們。我簡單地訪問畫布作爲數據元素fig.canvas並將其用作QWidget。在構建任何圖形之前,致電QtGui.QApplication()也很重要。

+1

推薦的那樣,我覺得我實際上在做那些,但它不起作用。也許你可以在http://pastebin.com/Y7Fcsnpp上看看我的代碼(46行),並且可能對發生了什麼問題有所瞭解。 – Christian

0

我有一個類似的問題,但我的軸不會出現。我打電話給FigureCanvas.__init__(),然後通過self.ax = self.fig.add_subplot(111, projection='3d')加上這個座標軸,就像Björn

相關問題