Использование библиотеки Matplotlib. Как делать анимированные графики

Немного рекламы

Иногда нужно показать график в динамике, например, как меняется со временем какая-то величина. Если мы захотим воспользоваться функцией show(), то анимицию сделать не получится по той причине, что эта функция покажет окно с графиком и будет ждать, пока окно закроют.

Нам нужен способ периодически обновлять окно с графиком. Для этого используется так называемый интерактивный режим, который включается с помощью функции ion() пакета pylab, а выключается функцией ioff().

Кроме того, вместо функции show() мы должны использовать функцию draw(), которая отображает график и не задерживает выполнение программы.

Следующий пример демонстрирует просто движущуюся синусоиду. Для простоты окно закрывается после показа 50 кадров.

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import math

# Импортируем один из пакетов Matplotlib
import pylab

# Импортируем пакет со вспомогательными функциями
from matplotlib import mlab

# Интервал изменения переменной по оси X
xmin = -20.0
xmax = 20.0

# Шаг между точками
dx = 0.01

# Создадим список координат по оиси X на отрезке [-xmin; xmax], включая концы
xlist = mlab.frange (xmin, xmax, dx)

# !!! Включаем интерактивный режим
pylab.ion()

# У нас будет 50 кадров
for n in range (50):
    # Данные для очередного кадра
    ylist = [math.sin (x + n / 2.0) for x in xlist]

    # !!! Очистим график
    pylab.clf()

    # Выведем новые данные
    pylab.plot (xlist, ylist)

    # !!! Нарисуем их
    # !!! Обратите внимание, что здесь используется функция draw(), а не show()
    pylab.draw()

# !!! Закроем окно, иначе при завершении программы получим ошибку
pylab.close()

Остальные примеры

Немного рекламы

Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.
4.5 stars

Рейтинг 4.3/5. Всего 15 голос(а, ов)




Подписаться на комментарии
Автор:
Тема:
 Ваш комментарий
 
 
Введите код 285