БИБЛИОТЕКА MATPLOTLIB
matplotlib
Основная идея matplotlib - рисунки и графики
Подключение matplotlib
Создание рисунка и графиков в нём
Отображение данных на графике
Цвет линий и стили
Маркеры для точек
Прозрачность
Диапазоны по осям
Заголовок графика, подписи осей, легенда
Заголовок графика, подписи осей, легенда
Метки по осям, линии сетки
Метки по осям, линии сетки
Запись графика в файл
Виды графиков
Виды графиков
Виды графиков
Виды графиков
Виды графиков
Виды графиков
Виды графиков
Виды графиков
Полезные ссылки
770.92K
Category: programmingprogramming

05+Biblioteka+Matplotlib.+Vizualizacija

1. БИБЛИОТЕКА MATPLOTLIB

ВИЗУАЛИЗАЦИЯ

2. matplotlib

Базовая библиотека для рисования в Python. На ней построены более
продвинутые и простые в использовании библиотеки типа seaborn.
Через matplotlib можно нарисовать что угодно, но часто на это уходит
слишком много строк кода, и её в основном используют для тонкой
настройки графиков и их сохранения.
Важно! Большинство настроек применяется к каждому графику
отдельно, т.е. параметры, написанные в ячейке с одним графиком, не
работают с графиком в другой ячейке.

3. Основная идея matplotlib - рисунки и графики

Все Графики (axes), которые мы строим в
matplotlib,"живут" внутри объекта Рисунок
(Figure).
То есть Figure (Рисунок) является общим
окном, в котором можно построить 1 или
несколько графиков (axes).
Axes - это сам график. У него есть оси
(axis), заголовок (title), легенда (legend) и
т.д.

4. Подключение matplotlib

Библиотека NumPy лежит в основе, поэтому подключаем и ее:
import numpy as np
Подключаем matplotlib:
import matplotlib.pyplot as plt
%matplotlib inline
Задаем общий стиль для всех графиков:
plt.style.use('seaborn-whitegrid')

5. Создание рисунка и графиков в нём

Создаём Рисунок fig и один график ax на нём:
fig, ax = plt.subplots(figsize=(5, 3)) # Рисунок fig с размерами (5, 3)
Один Рисунок fig с четырьмя графиками внутри него:
fig, axes = plt.subplots(2, 2) # рисунок будет расчерчен сеткой 2х2 и
в каждую ячейку мы вставляем график
Создаем Рисунок figure, а потом добавляем в него три графика
по очереди (ax1, ax2, ax3):
figure = plt.figure()
ax1 = figure.add_subplot(2, 2, 1) # расчерчиваем рисунок на 4 части
и вставляем график в 1 ячейку
ax2 = figure.add_subplot(2, 2, 2) # вставляем график во 2 ячейку
ax3 = figure.add_subplot(2, 2, 3) # вставляем график в 3 ячейку

6. Отображение данных на графике

Возьмем рисунок с одним графиком, создадим два набора
чисел (списки x и y) и построим график plot, показывающий
зависимость y(x):
fig, ax = plt.subplots()
x = [-3, -2, -1, 0, 1, 2, 3]
y = [9, 4, 1, 0, 1, 4, 9]
ax.plot(x, y);

7.

Можно построить две числовые зависимости на одном
графике. Например, y(x) и x_abs(x):
fig, ax = plt.subplots()
x = [-3, -2, -1, 0, 1, 2, 3]
y = [9, 4, 1, 0, 1, 4, 9]
x_abs = [3, 2, 1, 0, 1, 2, 3]
ax.plot(x, x_abs)
ax.plot(x, y);

8.

А теперь поработаем с рисунком, в котором была сетка 2х2 и
четыре графика. Чтобы построить график в нужной ячейке указываем ее номер по строке и номер по столбцу:
fig, axes = plt.subplots(2, 2)
x = [-3, -2, -1, 0, 1, 2, 3]
y = [9, 4, 1, 0, 1, 4, 9]
axes[1, 0].plot(x, y); # строится график в ячейке на 1-й строчке, в 0-м
столбце

9.

То же самое, но графики добавлялись после создания Рисунка.
Все графики поименованны (ax1, ax2, ax3), поэтому для
построения графика достаточно указать его по имени:
figure = plt.figure()
ax1 = figure.add_subplot(2, 2, 1)
ax2 = figure.add_subplot(2, 2, 2)
ax3 = figure.add_subplot(2, 2, 3)
ax3.plot(x, y) # строится график, добавленный 3-м по счёту (ax3)

10. Цвет линий и стили

За цвет линии отвечает параметр color. Цвет можно задавать
разными способами (rgb, названием, в 16-ном формате, ...).
Параметр linestyle определяет тип линии, которой будет
нарисован график (сплошная, пунктирная, точками, ...):

ax.plot(x, np.sin(x), color=(1.0, 0.2, 0.3), linestyle='-') # цвет задан в RGBформате, долями от 1
ax.plot(x, x + 5, color='blue', linestyle='--') # по названию цвета (словом)
ax.plot(x, x + 3, color='k', linestyle=':') # краткое название (для цветов RGB и
CMYK, а также Black и White)
ax.plot(x, np.cos(x), color='0.75', linestyle='-.') # сокращенное RGB
(соответствует (0.75,0.75,0.75))
ax.plot(x, x, color='#FFDD44',linestyle='--'); # 16-ричное значение цвета

11. Маркеры для точек

Символ, которым будет обозначаться точки на графике,
определяется параметром marker.
fig, ax = plt.subplots()
x = np.array([-3, -2, -1, 0.1, 1, 2, 3])
y = np.array([9, 4, 1, 0.1, 1, 4, 9])
ax.plot(x, y, marker='D') # маркер - ромбик (“Diamond”)
ax.plot(0.5 * x, y, marker='X') # маркер - большой крестик
ax.plot(2 * x, y, marker='*'); # маркер - звёздочка

12. Прозрачность

Для указания прозрачности цвета у линии графика - параметр
alpha. Его значение задается числом в диапазоне от 0
(полностью прозрачный) до 1 (не прозрачный).
fig, ax = plt.subplots()
x = np.array([-3, -2, -1, 0.1, 1, 2, 3])
y = np.array([9, 4, 1, 0.1, 1, 4, 9])
ax.plot(x, y, color='red', linestyle='-', marker="D", alpha=0.5, linewidth=9) # у
красной линии прозрачность = 0.5
ax.plot(0.5 * x, y,'*--g', linewidth=2.5);

13. Диапазоны по осям

Чтобы ограничить график по горизонтальной и/или
вертикальной оси, к графику необходимо применить методы
set_xlim() и set_ylim(). В скобках указываются нужные диапазоны,
которые будут отображаться на графике.
fig, ax = plt.subplots()
x = np.array([-3, -2, -1, 0.1, 1, 2, 3])
y = np.array([9, 4, 1, 0.1, 1, 4, 9])
ax.plot(x, y, color='red', linestyle='-', marker='o')
ax.set_xlim(0, 3.5) # по горизонтальной оси - от 0 до 3.5
ax.set_ylim(-5, 10); # по вертикальной оси - от (-5) до 10

14. Заголовок графика, подписи осей, легенда

Заголовок графика задается методом set_title('текст'). Он
выводится над графиком, на всю его ширину. Для
заголовочного текста можно определить размер шрифта, цвет,
начертание и др.
Горизонтальную и вертикальную оси также можно подписать,
для этого есть методы set_xlabel('текст'), set_ylabel('текст').
Подписи будут располагаться вдоль соответствующих осей
(вдоль горизонтальной - слева направо, вдоль вертикальной снизу вверх).

15. Заголовок графика, подписи осей, легенда

Чтобы на графике появилась легенда, необходимо сначала в
каждом вызове метода plot() задать значение параметра label.
Затем к графику применяется метод legend(), и легенда
появляется. Параметр loc задает местоположение легенды.

ax.plot(x, y, color='red', linestyle='-', marker='o', label='y=x^2')
ax.plot(0.5 * x, y, color='green', linestyle='-', marker='*', label='y=0.5 * x^2')
ax.set_title('Две параболы на одном графике', fontsize=20)
ax.set_xlabel("Ось х")
ax.set_ylabel("Ось у")
ax.legend(loc='lower left');

16. Метки по осям, линии сетки

Методы set_xticks(), set_yticks() позволяют задать числовые
пометки по горизонтальной и вертикальной осям. В скобках
указывается способ, которым должны быть получены значения
(например, функция np.arrange(), которая строит
арифметическую прогрессию; список чисел; и др.).
Метод grid() отрисовывает линии сетки (горизонтальные и/или
вертикальные) в тех точках, которые были рассчитаны в методах
set_xticks() и set_yticks().

17. Метки по осям, линии сетки

fig, ax = plt.subplots()
x = np.array([-3, -2, -1, 0.1, 1, 2, 3])
y = np.array([9, 4, 1, 0.1, 1, 4, 9])
ax.plot(x, y, color='red', linestyle='-', marker='o', label='y=x^2')
ax.set_xticks(np.arange(-3, 3, 0.5)) # по оси Х расставляем метки
ax.set_yticks(np.arange(0, 10, 3)) # по оси Y расставляем метки
ax.spines['right'].set_visible(False) # линия, ограничивающая график справа,
будет невидимой
ax.spines['top'].set_visible(False) # линия, ограничивающая график сверху,
будет невидимой
ax.grid(color = 'blue', linewidth = 2, linestyle = '--'); # рисуем линии сетки

18. Запись графика в файл

График, который получился в итоге, после всех операций,
можно сохранить как картинку в файл. Для этого есть метод
savefig():
fig.savefig('./figure1.png')

19. Виды графиков

Scatter plot - точечная
диаграмма, показывает
зависимость одной
переменной от другой.
3D Scatter plot Пространственная
диаграмма, в трехмерном
пространстве.

20. Виды графиков

Bars - столбиковая
диаграмма, каждый
столбик показывает
величину
соответствующего
значения. Может быть
вертикальной (столбики
направлены снизу вверх),
или горизонтальной
(столбики слева направо,
"линейчатая" диаграмма).

21. Виды графиков

Stacked bar chart столбиковая
(линейчатая)
диаграмма с
накоплением.

22. Виды графиков

Гистограмма показывает
распределение
значений некоторого
признака (как часто
появляется значение
признака). Значения
могут быть
сгруппированы в
заданное количество
интервалов (параметр
bins).

23. Виды графиков

Box-plot или "ящик с усами" - специальный вид диаграмм, широко
используемый в статистике. В удобной форме показывает медиану
(или среднее, если необходимо), нижний и верхний квартили,
минимальное и максимальное значение выборки, а также
выбросы.

24. Виды графиков

Pie chart (круговая
диаграмма) - хорошо
подходит, чтобы
проиллюстрировать
числовую пропорцию.
Длина дуги каждого среза
пропорциональна
величине, которую он
представляет.

25. Виды графиков

Area chart (диаграмма с
областями)
Time Series Plot
(диаграмма для
временных рядов)

26. Виды графиков

3D Surface (поверхность в трехмерном пространстве)

27. Полезные ссылки

https://www.tutorialspoint.com/matplotlib/index.htm
https://matplotlib.org/3.1.1/gallery/index.html
https://matplotlib.org/3.2.2/users/index.html
English     Русский Rules