Menganimasikan panah di matplotlib
Saya menganimasikan baris di matploltib, output kode terlihat seperti ini:
Tetapi yang saya inginkan adalah alih-alih baris ini, kode harus memplot panah (yaitu kepala panah di akhir baris), berikut adalah cuplikan kodenya:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
fig, ax = plt.subplots(figsize=(12, 8))
ax.set(xlim=(0, 104), ylim=(0, 68))
x_start, y_start = (50, 35)
x_end, y_end = (90, 45)
x = np.linspace(x_start, x_end, 50)
y = np.linspace(y_start, y_end, 50)
line, = ax.plot(x, y)
def animate(i):
line.set_data(x[:i], y[:i])
return line,
ani = animation.FuncAnimation(
fig, animate, interval=20, blit=True, save_count=50)
plt.show()
Apa yang harus saya tambahkan / ubah dalam kode sehingga saya bisa mendapatkan panah alih-alih garis pada keluaran?
Jawaban
Menjawab
Anda dapat menggunakan ax.arrowuntuk memplot panah.
Perhatikan bahwa Anda harus menghapus plot dengan ax.cla()dan menyesuaikan batas sumbu ax.set()pada setiap iterasi.
Kode
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
fig, ax = plt.subplots(figsize=(12, 8))
ax.set(xlim=(0, 104), ylim=(0, 68))
x_start, y_start = (50, 35)
x_end, y_end = (90, 45)
N = 50
x = np.linspace(x_start, x_end, N)
y = np.linspace(y_start, y_end, N)
def animate(i):
ax.cla()
ax.arrow(x_start, y_start,
x[i] - x_start, y[i] - y_start,
head_width = 2, head_length = 2, fc = 'black', ec = 'black')
ax.set(xlim = (0, 104), ylim = (0, 68))
ani = animation.FuncAnimation(fig, animate, interval=20, frames=N, blit=False, save_count=50)
plt.show()
Animasi
Mungkin coba lihat di sini
Anda cukup mengubah fungsi garis menjadi fungsi panah. Tetapi perhatikan bahwa pertama-tama Anda harus menghitung titik akhir panah, karena menurut dokumen, Anda hanya dapat menentukan panjang dx, dy. Dengan menggunakan pythagoras, titik awalnya adalah x[0], y[0]dan dx, dyadalah titik akhir yang diterjemahkan.
Saya pikir Anda bisa menyelesaikannya sekarang sendiri.