Similar presentations:
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.htmhttps://matplotlib.org/3.1.1/gallery/index.html
https://matplotlib.org/3.2.2/users/index.html
programming