- Как построить временной ряд в Matplotlib (с примерами)
- Пример 1: построение базового временного ряда в Matplotlib
- Пример 2. Настройка меток заголовка и осей
- Пример 3: построение нескольких временных рядов в Matplotlib
- График обновляемый в реальном времени на Python
- Введение
- Установка модуля
- Написание кода
- Видеоурок
- Заключение
- Построение графиков в Python при помощи Matplotlib
- Что мы рассмотрим?
- Почему Matplotlib может быть сложным?
- Pylab: что это и нужно ли мне это?
Как построить временной ряд в Matplotlib (с примерами)
Вы можете использовать следующий синтаксис для построения временного ряда в Matplotlib:
import matplotlib.pyplot as plt plt.plot (df.x , df.y )
Это предполагает, что переменная x относится к классу datetime.datetime() .
В следующих примерах показано, как использовать этот синтаксис для построения графика данных временных рядов в Python.
Пример 1: построение базового временного ряда в Matplotlib
В следующем коде показано, как построить временной ряд в Matplotlib, показывающий общий объем продаж компании за 12 дней подряд:
import matplotlib.pyplot as plt import datetime import numpy as np import pandas as pd #define data df = pd.DataFrame() #plot time series plt.plot (df.date , df.sales , linewidth= 3 )
По оси X показана дата, а по оси Y — общий объем продаж на каждую дату.
Пример 2. Настройка меток заголовка и осей
Вы можете использовать следующий код, чтобы добавить заголовок и метки осей к графику:
import matplotlib.pyplot as plt import datetime import numpy as np import pandas as pd #define data df = pd.DataFrame() #plot time series plt.plot (df.date , df.sales , linewidth= 3 ) #add title and axis labels plt.title('Sales by Date') plt.xlabel('Date') plt.ylabel('Sales')
Пример 3: построение нескольких временных рядов в Matplotlib
Следующий код показывает, как построить несколько временных рядов на одном графике в Matplotlib:
import matplotlib.pyplot as plt import datetime import numpy as np import pandas as pd #define data df = pd.DataFrame() df2 = pd.DataFrame() #plot both time series plt.plot (df.date , df.sales , label='sales', linewidth= 3 ) plt.plot (df2. date , df2. returns , color='red', label='returns', linewidth= 3 ) #add title and axis labels plt.title('Sales by Date') plt.xlabel('Date') plt.ylabel('Sales') #add legend plt.legend() #display plot plt.show()
График обновляемый в реальном времени на Python
Статьи
Введение
В ходе статьи научимся создавать графики обновляемые в режиме реального времени на языке программирования Python при помощи библиотеки matplotlib.
Установка модуля
Для начала работы с модулем matplotlib, его необходимо установить. Для этого нужно перейти в терминал, или же командную строку, прописать pip install matplotlib, нажать Enter и ждать установки.
Написание кода
После установки модуля matplotlib, мы его импортируем из него pyplot и animation:
import matplotlib.pyplot as plt import matplotlib.animation as animation
Создадим экземпляр класса figure, и добавим к нему область Axes:
import matplotlib.pyplot as plt import matplotlib.animation as animation fig = plt.figure() ax = fig.add_subplot(1, 1, 1)
Создадим функцию animate, параметром которой будет i. Внутри функции мы считываем файл stock.txt. В данном файле будут храниться координаты, которые мы будем заполнять в режиме реального времени.
import matplotlib.pyplot as plt import matplotlib.animation as animation fig = plt.figure() ax = fig.add_subplot(1, 1, 1) def animate(i): data = open('stock.txt', 'r').read()
При помощи метода split() будем разделять строки в файле. В качестве разделителя укажем ‘\n’:
import matplotlib.pyplot as plt import matplotlib.animation as animation fig = plt.figure() ax = fig.add_subplot(1, 1, 1) def animate(i): data = open('stock.txt', 'r').read() lines = data.split('\n')
import matplotlib.pyplot as plt import matplotlib.animation as animation fig = plt.figure() ax = fig.add_subplot(1, 1, 1) def animate(i): data = open('stock.txt', 'r').read() lines = data.split('\n') xs = [] ys = []
Так как координаты мы будем заполнять через запятую (x, y), нам нужно их разделить по разным спискам. Создадим цикл, в котором будут заполняться списки xs и ys:
import matplotlib.pyplot as plt import matplotlib.animation as animation fig = plt.figure() ax = fig.add_subplot(1, 1, 1) def animate(i): data = open('stock.txt', 'r').read() lines = data.split('\n') xs = [] ys = [] for line in lines: x, y = line.split(',') xs.append(float(x)) ys.append(float(y))
Очистим Оси и добавим координаты xs и ys в график:
import matplotlib.pyplot as plt import matplotlib.animation as animation fig = plt.figure() ax = fig.add_subplot(1, 1, 1) def animate(i): data = open('stock.txt', 'r').read() lines = data.split('\n') xs = [] ys = [] for line in lines: x, y = line.split(',') xs.append(float(x)) ys.append(float(y)) ax.clear() ax.plot(xs, ys)
Добавим надписи по x и y. Допустим по x у нас будет название, а по y – цена. Также добавим заголовок графика:
import matplotlib.pyplot as plt import matplotlib.animation as animation fig = plt.figure() ax = fig.add_subplot(1, 1, 1) def animate(i): data = open('stock.txt', 'r').read() lines = data.split('\n') xs = [] ys = [] for line in lines: x, y = line.split(',') xs.append(float(x)) ys.append(float(y)) ax.clear() ax.plot(xs, ys) plt.xlabel('Название') plt.ylabel('Цена') plt.title('График обновляемый в режиме реального времени')
Осталось вызвать анимацию и отобразить график:
import matplotlib.pyplot as plt import matplotlib.animation as animation fig = plt.figure() ax = fig.add_subplot(1, 1, 1) def animate(i): data = open('stock.txt', 'r').read() lines = data.split('\n') xs = [] ys = [] for line in lines: x, y = line.split(',') xs.append(float(x)) ys.append(float(y)) ax.clear() ax.plot(xs, ys) plt.xlabel('Название') plt.ylabel('Цена') plt.title('График обновляемый в режиме реального времени') ani = animation.FuncAnimation(fig, animate, interval=1000) plt.show()
Видеоурок
Заключение
В ходе статьи мы с Вами научились создавать график обновляемый в режиме реального времени на языке программирования Python. Надеюсь Вам понравилась статья, желаю удачи и успехов! 🙂
Построение графиков в Python при помощи Matplotlib
Картиной можно выразить тысячу слов. В случае с библиотекой Python matplotlib, к счастью, понадобится намного меньше слов в коде для создания качественных графиков.
Однако, matplotlib это еще и массивная библиотека, и создание графика, который будет выглядеть «просто, нормально» обычно проходит через путь проб и ошибок. Использование однострочных линий для создания базовых графиков в matplotlib – весьма просто, но умело пользоваться остальными 98% библиотеки может быть сложно.
Эта статья – руководство для пользователей Python на начальном-среднем уровне по matplotlib, с использованием как теории, так и практических примеров. Обучение по практическим примерам может быть очень продуктивным, и дает возможность получить представление даже на поверхностном уровне понимания внутренней работы и макета библиотеки.
Что мы рассмотрим?
- Pylab и pyplot: кто есть кто?
- Ключевые концепции дизайна matplotlib;
- Понимание plt.subplots();
- Визуализация массивов при помощи matplotlib;
- Построение графиков с комбинацией pandas и matplotlib.
Эта статья подразумевает, что пользователь имеет хотя-бы минимальное представление о NumPy. Мы в основном будем пользоваться модулем numpy.random для создания «игрушечных» данных, рисовать примеры из различных статистических источников.
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!
Telegram Чат & Канал
Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!
Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!
Если у вас еще не установлен matplotlib, рекомендуем ознакомиться с руководством по установке, перед тем как продолжить.
Почему Matplotlib может быть сложным?
Изучение matplotlib временами может быть тяжелым процессом. Проблема не в нехватке документации (которая весьма обширная, между прочим). Сложности могут возникнуть со следующим:
- Размер библиотеки огромный сам по себе, около 70 000 строк кода;
- Matplotlib содержит несколько разных интерфейсов (способов построения фигуры) и может взаимодействовать с большим количеством бекендов. (Бекенды отвечают за то, как по факту будут отображаться диаграммы, не только за внутреннюю структуру);
- Несмотря на обширность, часть собственной документации matplotlib серьезно устарела. Библиотека все еще развивается, и множество старых примеров в сети могут включать на 70% меньше кода, чем в их современной версии;
Так что, перед тем как мы перейдем к сложным примерам, не помешает освоить корневые концепции дизайна matplotlib.
Pylab: что это и нужно ли мне это?
Немножко истории: Нейробиолог Джон Д. Хантер начал разрабатывать matplotlib в 2003 году, в основном вдохновляясь эмуляцией команд программного обеспечения Mathworks MATLAB. Джон отошел в мир иной трагически рано, в возрасте 44 лет в 2012 году, и matplotlib на сегодняшний день является целиком и полностью продуктом сообщества: развивается и поддерживается множеством людей. (Джон говорил об эволюции matplotlib на конференции SciPy в 2012, которую однозначно стоит посмотреть.)
Одной из важных особенностей MATLAB является его глобальный стиль. Концепция импорта Python не сильно используется в MATLAB, и большинство функций MATLAB легко доступны для пользователя на верхнем уровне.
Заказать свой собственный уникальный номер можно от Сим-Трейд.ру. Быстрая доставка в день заказа и красивые номера начиная от 300 руб. с выгодным тарифным планом. Свой уникальный номер это хороший признак для введения бизнеса с момента первого звонка.
Понимание того, что корни matplotlib растут из MATLAB, помогает объяснить существование pylab. pylab – это модуль внутри библиотеки matplotlib, который был встроен для подражания общего стиля MATLAB. Он существует только для внесения ряда функций классов из NumPy и matplotlib в пространство имен, что упрощает переход пользователей MATLAB, которые не сталкивались с необходимостью в операторах импорта. Бывшие пользователи MATLAB (которые очень хорошие люди, обещаем!) полюбили его функционал, потому что при помощи from pylab import * они могут просто вызывать plot() или array() напрямую также, как они это делали в MATLAB.
Проблема здесь может быть очевидной для некоторых пользователей Python: использование from pylab import * в сессии или скрипте – как правило, плохая идея. Matplotlib сегодня прямым текстом рекомендуют не делать этого в своих руководствах:
[pylab] все еще существует по историческим причинам, но его использование не рекомендуется. Он перегружает пространства имен функциями, которые оттеняют надстройки Python и может привести к скрытым багам. Для получения интеграции IPython без использования импортов, рекомендуется использовать %matplotlib.
В глубине своей, существует целая тонна потенциально конфликтных импортов, замаскированных в коротком источнике pylab. Фактически, использование ipython —pylab (из терминала или командной строки) или %pylab (из инструментов IPython/Jupyter) легко вызывает from pylab import *
Суть в том, что matplotlib забросили этот удобный модуль и рекомендуют не использовать pylab, подтверждая ключевое правило Python – явное лучше, чем неявное.
Без необходимости в использовании pylab, мы всегда можем обойтись всего одним каноничным импортом: