Matplotlibを使って3次元プロットを作成し、matplotlibのアニメーションパッケージを作成しようとしています。さらに、アニメーションは、PyQtとQt-Designerを使用して生成されたGuiの一部でなければなりません。現在、私は「animation.Funcnimation()」が正しく、少なくとも私はそう思うの使用についてこだわっている...だからここ は私のコードです:Python:mplot3dとアニメーションを使用してベクトルをアニメーション化する
import sys
from PyQt4.uic import loadUiType
from PyQt4 import QtGui
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib import animation
import numpy as np
import Quaternion as qt
Ui_MainWindow, QMainWindow = loadUiType('Newsphere.ui')
class Kinematic(Ui_MainWindow, QMainWindow):
def __init__(self):
super(Kinematic, self).__init__()
self.setupUi(self)
self.fig = plt.figure()
self.ax = self.fig.add_subplot(111,projection = '3d')
self.fig.tight_layout()
self.ani = animation.FuncAnimation(self.fig, self.update,
init_func=self.setup_plot, blit=True)
self.canvas = FigureCanvas(self.fig)
self.mplvl.addWidget(self.canvas)
self.canvas.draw()
def setup_plot(self):
self.ax.view_init(40, 45)
self.ax.set_xlabel('X')
self.ax.set_ylabel('Y')
self.ax.set_zlabel('Z')
self.ax.set_xlim3d(-1,1)
self.ax.set_ylim3d(-1,1)
self.ax.set_zlim3d(-1,1)
g_x = np.matrix([[1.0],[0.0],[0.0]])
g_y = np.matrix([[0.0],[1.0],[0.0]])
g_z = np.matrix([[0.0],[0.0],[1.0]])
self.ax.plot([0,g_x[0]], [0,g_x[1]], [0,g_x[2]], label='$X_0$')
self.ax.plot([0,g_y[0]], [0,g_y[1]], [0,g_y[2]], label='$Y_0$')
self.ax.plot([0,g_z[0]], [0,g_z[1]], [0,g_z[2]], label='$Z_0$')
self.vek, = self.ax.plot([0,-1], [0,0], [0,0], label='$g \cdot R$', animated=True)
self.ax.legend(loc='best')
self.ax.scatter(0,0,0, color='k')
return self.vek,
def update(self, i):
b = self.bslider.value()/100
g = np.matrix([[1.0],[0.0],[0.0]])
q = np.array([0,b,0.5,0])
R = qt.QtoR(q)
x, y, z = R*g
self.vek, = self.ax.plot([0,x], [0,y], [0,z], label='$g \cdot R$', animated=True) #the rotated vector
return self.vek,
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
main = Kinematic()
main.show()
sys.exit(app.exec_())
あなただけでそれを実行することはできません"Newsphere.ui"(13行目)とQuaternion.py(11行目)というファイルがないので、コピー貼り付けをしてください。したがって、私が実行すると、次のようになります(実際に私が望むのと同じです): Coordinate system
私の目標は、私が得たデータを使ってベクトル(線50)を描き、それをアニメーション化することです。 Gui-slider(58行目)。誰もこれで私を助けることができますか?私は数日間このことに固執しています!
[最小、完全で、証明可能な例](http://stackoverflow.com/help/mcve) –
を作成してください。私はGUIの.uiファイルを変換する必要があります。 。しかし、私はそれを理解した、私の答えを見てください! – Michael
それがあなたの問題を解決したならば、答えを受け入れることを忘れないでください。 –