Matplotlib'de okları canlandırın

Sep 16 2020

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

3 Konqui Sep 16 2020 at 08:10

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

V.Hunon Sep 16 2020 at 06:41

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.