- Графики
- Бекенды
- Глобальный объект pyplot
- Рисование с использованием объекта plt (в стиле MATLAB)
- Рисование с использованием объекта plt (в стиле matplotlib)
- Рисование с использованием объекта Figure
- Анатомия графика
- Популярные типы графиков — основные
- Некоторые аргументы plot и scatter
- Теплокарты и контуры
- Дополнительные методы для теплокарт
- Гистограммы и барплоты
- Вспомогательные функции — надписи и подписи
- Вспомогательные функции — оси
- Функции объекта pyplot — Масштабы осей
- Специальные построения: несколько систем координат
- Пример
- Специальные построения: Теплокарты
- Пример
- Управление расположением цветовой шкалы
- Специальные построения: Контуры
- Подготовка
- Рисование
Графики
Самым популярным модулем для построения графиков в Python является matplotlib [pip] .
Бекенды
Модуль matplotlib предоставляет стандартное API для построение графиков и, так называемые, бекенды, которые отвечают за вывод результатов пользователю.
Они бывают как интерактивные (открываются в отдельном окне, позволяют заимодействовать с графиком, например Qt5Agg ), так и неинтерактивные, результатом работы которых является картинка. В средах использующих IPython (например Spyder) имеется дополнительный неинтерактивные бекенд inline , для вывода графиков в среду. Неинтерактивные бекенды удобны для создания большого числа графиков.
Выбор бекенда осуществляется в настройках среды или в коде:
import matplotlib matplotlib.use('Qt5Agg')
Глобальный объект pyplot
Модуль matplotlib содержит глобальный объект pyplot , который выступает в роли стандартного холста:
import numpy as np import matplotlib.pyplot as plt # рисуем plt.plot([1,2,3],[5,3,7]) # отображаем или сохраняем plt.show() plt.savefig('filename.png')
Хорошие форматы для сохранения графиков: векторные: .svg , .eps и растровые без потерь: .png , .tiff .
При запуске по ячейкам среды автоматически вызывают plt.show() если в ячейке что-то было нарисовано для отображения результата.
После отображения или сохранения результата глобальный объект pyplot очищается.
Рисование с использованием объекта plt (в стиле MATLAB)
t = np.arange(0.0, 2.0, 0.01) s = 1 + np.sin(2*np.pi*t) plt.plot(t, s, color="blue", label="s(t)") plt.xlabel('время, с') plt.ylabel('значение, мВ') plt.title('Заголовок слайда') plt.grid() plt.legend()
Рисование с использованием объекта plt (в стиле matplotlib)
t = np.arange(0.0, 2.0, 0.01) s = 1 + np.sin(2*np.pi*t) fig = plt.figure() ax = fig.add_subplot() ax.plot(t, s, color="blue", label="s(t)") ax.set_xlabel('время, с') ax.set_ylabel('значение, мВ') ax.set_title('Заголовок слайда') ax.grid() ax.legend()
Рисование с использованием объекта Figure
import matplotlib t = np.arange(0.0, 2.0, 0.01) s = 1 + np.sin(2*np.pi*t) fig = matplotlib.figure.Figure() ax = fig.add_subplot() ax.plot(t, s, color="blue", label="s(t)") ax.set_xlabel('время, с') ax.set_ylabel('значение, мВ') ax.set_title('Заголовок слайда') ax.grid() ax.legend() fig.savefig('file.png')
Анатомия графика
Популярные типы графиков — основные
Некоторые аргументы plot и scatter
Аргумент | Назначение | Примеры значений |
---|---|---|
color | Цвет линии | «black», «#f000f0» |
label | Текст в легенде | «синус икс» |
linestyle | Стиль линии | «», «-«, «—«, «dotted» |
linewidth | Ширина линии | 6.5 |
marker | Форма маркера | «», «+», «o», «4» |
markerfacecolor | Цвет маркера | «black», «#f000f0» |
markeredgecolor | Цвет обводки маркера | «black», «#f000f0» |
markeredgewidth | Ширина обводки маркера | 0.5 |
markersize | Размер маркера | 2.5 |
Теплокарты и контуры
Метод | Назначение | Пример |
---|---|---|
plt.pcolor | Рисование теплокарты | plt.pcolor(data, vmin=0, vmax=3) |
plt.imshow | Рисование изображения | plt.imshow(data, extent=[-3, 3, -3, 3], vmin=-1, vmax=1) |
plt.contour | Рисование контуров | cnt_data = plt.contour(data, levels = [1,2,3], colors = ‘white’) |
plt.contourf | Рисование контуров | cnt_data = plt.contour(data, levels = [1,2,3], colors = ‘white’) |
Дополнительные методы для теплокарт
Метод | Назначение | Пример |
---|---|---|
plt.colorbar | Рисование шкалы цвета | plt.colorbar() |
plt.clabel | Рисование меток на контурах | plt.clabel(cnt_data, inline=True, fontsize=10, fmt = ‘%2.0f’, colors = ‘white’) |
Гистограммы и барплоты
Метод | Назначение | Пример |
---|---|---|
plt.hist | Гистограмма | plt.hist(x, np.arange(0,3,1/5)) |
plt.bar | Барплот | plt.bar(ind, values, width) |
Вспомогательные функции — надписи и подписи
Функция | Назначение | Пример использования |
---|---|---|
ax.set_xlabel | Подпись оси X | plt.xlabel(«Подпись Х») |
ax.set_ylabel | Подпись оси Y | plt.ylabel(«Подпись Y») |
ax.set_title | Заголовок графика | plt.title(«Заголовок») |
ax.legend | Показать легенду | plt.legend(loc=’upper left’) |
ax.annotate | Добавить аннотацию к точке xy | ax.annotate(‘Максимум’, xy=(2, 1)) |
В тексте можно использовать команды на TeXе окружая их знаками долларов: $4\pi^2$ .
Вспомогательные функции — оси
Функция | Назначение | Пример использования |
---|---|---|
ax.set_xlim | Границы по оси X | plt.xlim(-4.0, 4.0) |
ax.set_ylim | Границы по оси Y | plt.ylim(-3.0, 10.0) |
ax.set_xticks | Отсчеты по оси X | plt.xticks([1, 2, 3, 4, 5]) |
ax.set_yticks | Отсчеты по оси Y | plt.yticks([1,2,3,], [‘1a’,’2a’,’3a’]) |
ax.grid | Включить сетку | plt.grid(True) |
ax.hlines | Горизонтальные линии | ax.hlines(3, -10, 10) |
ax.vlines | Вертикальные линии | ax.vlines(3, -10, 10) |
Функции объекта pyplot — Масштабы осей
Функция | Назначение | Пример использования |
---|---|---|
ax.set_xscale | Масштаб по оси X | ax.set_xscale(«log») |
ax.set_yscale | Масштаб по оси Y | ax.set_yscale(«linear») |
fig.add_subplot(polar=True) | Создать систему полярных координат |
Специальные построения: несколько систем координат
Использование модуля matplotlib.gridspec .
# Задаем сетку для деления 2 строки 3 столбца grsp = matplotlib.gridspec.GridSpec(2, 3) # Получаем указатели на отельные оси с помощью слайсов axis1 = fig.add_subplot(grsp[0, :]) # Вся верхняя строка axis2 = fig.add_subplot(grsp[1, 0:2]) # Нижняя строка две левых клетки axis3 = fig.add_subplot(grsp[1, 2]) # Нижняя строка правый угол
Пример
Специальные построения: Теплокарты
Для построения теплокарты необходимо иметь двумерный массив с данными.
plt.imshow(data, extent=[-3, 3, -3, 3], origin='lower', cmap='YlGnBu') plt.colorbar()
Выбираем нужный тип палитры на сайте matplotlib.
Пример
Управление расположением цветовой шкалы
from mpl_toolkits.axes_grid1 import make_axes_locatable # находим нашу систему коордит в рамках Figure divider = make_axes_locatable(ax) # определяем новую область для рисования цветовой шкалы color_ax = divider.new_horizontal(size="3%", pad=0.1, axes_class=plt.Axes) # добавляем к фигуре новую область для цветовой шкалы fig.add_axes(color_ax) #рисуем шкалу fig.colorbar(im, cax=color_ax)
Специальные построения: Контуры
Для построения контуров необходимо иметь: два одномерных массива с равномерными интервалами между точками и двумерный массив с данными. Ключевые методы plt.contour и plt.contourf .
Подготовка
# Источник данных — функция двух переменных def f(x, y): return (1 - x / 2 + x ** 5 + y ** 3) * np.exp(-x ** 2 -y ** 2) # Создаем массивы для осей: n = 256 x = np.linspace(-3, 3, n) y = np.linspace(-3, 3, n) # Делаем мешгрид gridX, gridY = np.meshgrid(x, y) data = f(gridX, gridY)
Рисование
#Раскрашивание контуров цветами (палитра 'jet') cntrf = plt.contourf(gridX, gridY, data, 8, alpha=.75, cmap='jet') #Разграничение контуров линиями cntr = plt.contour(X, Y, f(X, Y), 8, colors='black') #Добавляем подписи на контуры plt.clabel(cntr, inline=1, fontsize=10) #Добавляем цветовую легенду plt.colorbar(cntrf)