我想用一些特定的點來生成一條影片曲線。但是,當我使用下面的代碼時,沒有影片顯示,圖片的x坐標和y坐標一直在變化。我使用了FuncAnimation函式,而我傳入這個函式的引數是plot_gesture,這個函式用于繪制所有的點。
我的軌跡是一個串列,它的元素都是串列(長度為2),就像[[2.5,2], [4,3.5], [2,6] ....] 我的位置是一個ndarray,它的元素都是tuples(長度為2),就像((3,5),(6,7)....)。 軌跡的長度比位置的長度要長得多,因為位置是軌跡的所有采樣點的點。軌跡則是整個軌跡的所有點。所以,我需要在軌跡上畫出所有的點,并將位置的點分散開來
def plot_gesture(i = int) 。
X = []
Y = []
X_point = []
Y_點 = []
for x in trajectory[:i] 。
X.append(x[0] )
Y.append(x[1] )
for x in position[:i]:
X_point.append(x[0] )
Y_point.append(x[1])
plt.plot(X, Y)
for x, y in zip(X_point, Y_point)。
plt.scatter(x, y)
if __name__ == "__main__"/span>:
軌跡 = point_list
position = np.array(sampled_all_points)
ani=animation.FuncAnimation(fig= fig,func= plot_gesture, interval= 20)
plt.show()。
uj5u.com熱心網友回復:
你應該總是將你的資料納入你的問題。
由于你沒有指定什么是position和trajectory,我想你需要一個position陣列,有N行和2列,其中包含x和y一個移動點的坐標。我生成了一個這樣的陣列:
N = 200。
time = np.linspace(0, 30, N)
position = np.array([1/3*time*np.cos(time), 1/3*time*np.sin(time) ] ) .T
[[ 0.00000000e 00 0.00000000e 00]
[4.96813143e-02 7.54690426e-03]
[9.59688338e-02 2.98452338e-02]
[1.35597167e-01 6.58794885e-02]
[1.65553654e-01 1.13995649e-01]
[1.83194645e-01 1.71957672e-01]
[1.86350032e-01 2.37024178e-01]
[1.73412613e-01 3.06042995e-01]
[1.43409393e-01 3.75560683e-01]
[9.60523732e-02 4.41943697e-01]
[3.17670638e-02 5.01507457e-01]
...
你需要定義一個數字來傳遞給FuncAnimation和一個animation函式。在這個函式中,你需要:
擦除先前的繪圖繪制當前狀態固定軸,以避免在影片程序中出現不愉快的軸修改。
所以你可以這樣設定代碼:
importmatplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import numpy as np
def animate(i)。
# erase previous plot: i.
ax.cla()
# 繪制點的軌跡。
ax.cla() plot(position[:i 1, 0), position[: i 1, 1], linestyle = '-'/span>, color = 'blue'/span>)
#繪制點的當前位置。
ax. plot(position[i, 0], position[i, 1], marker = 'o'/span>, markerfacecolor = 'red', markeredgecolor = 'red')
# fix axes limits10, 10)
ax.set_ylim(-10, 10)
if __name__ == "__main__"/span>:
# position array generation.
N =200
time = np.linspace(0, 30, N)
position = np.array([1/3*time*np.cos(time), 1/3*time*np.sin(time) ] ).T
# 生成圖和軸。
fig, ax = plt.subplots(figsize = (5, 5)
# 定義影片20, frames = N)
# 顯示影片
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/319401.html
標籤:
上一篇:Matplotlib的散點圖影片

