Простая анимация 2D координат с использованием matplotlib и pyplot

Я новичок в matplotlib. У меня есть список координат x-y, которые я обновляю в python и хочу анимировать, используя pyplot matplotlib. Я хочу заранее указать x-range и y-range. Ниже мой текущий код:

import matplotlib.pyplot as plt
x=[1,2,3,4]
y=[5,6,7,8]
for t in range(100):
    #lists x and y get updated here
    #...
plt.plot(x, y, marker='o', linestyle='None')
plt.show()

Как видите, я используюplt.plot() а такжеplt.show() в конце моего итерационного цикла для построения только окончательных координат. Но я хочу поставить этот шаг Внутри цикл и график на каждой итерации с указанным временем паузы, чтобы у меня была анимация во время выполнения цикла.

Просто переместить это утверждение в цикл или настроить его не работает. Я хочу, чтобы все было очень просто, и не хочу использоватьmatplotlib.animation. Есть ли какой-то простой метод без использования большего количества модулей и библиотек (только такие вещи, какplt.pause() и, может быть, еще немного) это позволит мне делать то, что я хочу?

Я просмотрел много мест в Интернете, и проблема, с которой я сталкиваюсь при использовании большинства методов, заключается в том, что я использую для этого python (x, y) (это версия python 2.7) в Windows, и анимация, использующая слишком сложные модули и библиотеки, вылетает здесь. .

Однако я могу запускать простые вещи вроде этот пример на сайте matplotlib, который близок к тому, что я хочу, но не совсем. Так что, пожалуй, лучшая вещь будет модификация этого примера, которая работает для моего случая двумерных данных (этот пример для 1D строки). Но любые другие предложения приветствуются.

Ответы на вопрос(1)

Решение Вопроса

Это адаптировано издемонстрация анимации:

import matplotlib.pyplot as plt 
import numpy as np

fig, ax = plt.subplots()

x = [1, 2, 3, 4]
y = [5, 6, 7, 8]

for t in range(10):
    if t == 0:
        points, = ax.plot(x, y, marker='o', linestyle='None')
        ax.set_xlim(0, 10) 
        ax.set_ylim(0, 10) 
    else:
        new_x = np.random.randint(10, size=5)
        new_y = np.random.randint(10, size=5)
        points.set_data(new_x, new_y)
    plt.pause(0.5)

В то время как это просто строка документации говорит, что это медленно.

 01 февр. 2018 г., 16:31
Это может быть удобно использоватьax.clear(); тогда вы можете просто построить новую фигуру, и вам не нужно различать первый и последующий прогоны. Также,plt.pause() вызвал ошибку для меня, я использовалfig.canvas.start_event_loop() вместо.
 Abhranil Das05 июн. 2012 г., 15:04
Это отлично сработало с моей программой. Принято. И спасибо!
 Abhranil Das05 июн. 2012 г., 14:14
+1. Это работает. Я просто попытаюсь адаптировать его к моей окончательной программе и посмотреть, как это будет происходить.

Ваш ответ на вопрос