나는이 같이하기 matplotlib 사용하여 3D 플롯을 만들어 :하기 matplotlib와 PyQt는이
fig = pylab.figure()
ax = Axes3D(fig)
surf = ax.plot_surface(X, Y, Z, cmap=cm.gray_r, linewidth=0, antialiased=True)
fig.canvas.set_window_title("Distance")
pylab.show()
그것은 환상적이다 : 나는 회색 - 케일의 표면을보고 나는 음모를 이동, (그것과 상호 작용하는 표면을 켤 수 있습니다 , ...)
이제이 그림을 PyQt 형식으로 넣어야합니다. 나는이 일을 QMainWindow에서 상속하는 클래스를 생성 :
class ViewerForm(QMainWindow):
def __init__(self, p_parent=None, p_data=None):
QMainWindow.__init__(self, parent=p_parent)
self.main_frame = QWidget()
self.figure = pyplot.figure()
self.axis = Axes3D(self.figure)
self.canvas = FigureCanvas(self.figure)
self.canvas.setParent(self.main_frame)
self.mpl_toolbar = NavigationToolbar(self.canvas, self.main_frame)
self.X, self.Y = np.meshgrid(p_data[ "axis_x" ], p_data[ "axis_y" ])
self.Z = p_data[ "values_z" ]
self.surface = self.axis.plot_surface(self.X, self.Y, self.Z, cmap=cm.gray, linewidth=0, antialiased=True)
vbox = QVBoxLayout()
vbox.addWidget(self.canvas)
vbox.addWidget(self.mpl_toolbar)
self.main_frame.setLayout(vbox)
self.setCentralWidget(self.main_frame)
나는이 폼을 표시 할 때 내가 처음 플롯으로 그레이 스케일의 표면을 볼 수 있지만 나는이와 상호 작용할 수 없습니다 : 나는 이동할 수 없습니다 마우스로 서페이스를 클릭하십시오. 누구나 내가 잘못하고있는 것을 말하거나 오해 한 것을 말할 수 있습니까? http://www.scipy.org/Cookbook/Matplotlib/Interactive_Plotting