Matplotlib'de okları canlandırın
Matploltib'de bir satırı canlandırdım, kodun çıktısı şuna benziyor:
Ama istediğim şey, bu satır yerine kodun bir ok çizmesi (yani satırın sonunda bir ok başı), işte kod parçacığı:
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()
Çıktıdaki satır yerine ok alabilmem için koda ne eklemeliyim / değiştirmeliyim?
Yanıtlar
Cevap
ax.arrowOku çizmek için kullanabilirsiniz . Her yinelemede ile
grafiği temizlemeniz ax.cla()ve eksen sınırlarını ayarlamanız gerektiğini unutmayın ax.set().
Kod
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()
Animasyon
Belki buraya bir bak
Çizgi işlevini basitçe ok işlevine değiştirebilirsiniz. Ancak, önce okun bitiş noktasını hesaplamanız gerektiğini unutmayın, çünkü belgelere göre yalnızca dx, dy uzunluğunu belirtebilirsiniz. Pisagor'u kullanarak, başlangıç noktası olacağını x[0], y[0]ve dx, dytercüme uç noktasıdır.
Sanırım şimdi bunu kendi başına çözebilirsin.