Как указано выше, я пытаюсь оживить набор данных, который изменяется во времени (позиции). Я хотел бы, чтобы мой график отображал только данные о местоположении, но анимировал историю позиций с течением времени. Я начал с этого примера здесь , и он заработал. Теперь, вместо анимации всей линии, я хотел бы, чтобы линия рисовалась слева направо. Мне также нужно, чтобы линия была окрашена относительно вторичного набора данных, который я смог выполнить sh с помощью LineCollection.
Мой код:
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation
from matplotlib.collections import LineCollection
from matplotlib.colors import ListedColormap, BoundaryNorm
# First set up the figure, the axis, and the plot element we want to animate
fig = plt.figure()
ax = plt.axes(xlim=(0, 2), ylim=(-2, 2))
line = LineCollection([], cmap=plt.cm.jet)
line.set_array(np.linspace(0, 2, 1000))
ax.add_collection(line)
x = np.linspace(0, 2, 10000)
y = np.sin(2 * np.pi * (x))
# initialization function: plot the background of each frame
def init():
line.set_segments([])
return line,
# animation function. This is called sequentially
def animate(i, xss, yss, line):
xs = xss[:i]
ys = yss[:i]
points = np.array([xs, ys]).T.reshape(-1, 1, 2)
segments = np.concatenate([points[:-1], points[1:]], axis=1)
line.set_segments(segments)
return line,
# call the animator. blit=True means only re-draw the parts that have changed.
anim = animation.FuncAnimation(fig, animate, fargs=[x, y, line], init_func=init, frames=200, interval=20)
plt.show()
Я создаю базовый c набор данных синусоидальной волны и снова хотел бы анимировать линию, рисуемую слева направо. Прямо сейчас LineCollection окрашивается по значению y линии в текущей позиции x. В конце концов, это будет набор данных о местоположении, извлеченный из файла .csv.
Наконец, проблема. Приведенный выше код работает без ошибок, однако линия не рисуется. В моем отладчике я вижу, что массивы xs
и ys
добавляются на каждом этапе, так что синтаксис кажется работающим , только обновленная LineCollection не отображается.
Я работаю на macOS Mojave 10.14.6.