Библиотека Matplotlib используется для построения различных графиков на основе данных. В Debian устанавливается так:
1 |
$ sudo apt-get install python3-matplotlib |
Теперь запустим нашу Spyder 3. Если вы изучили мой учебник Python, то дальнейшие действия должны быть понятны.
Сначала импортируем модуль matplotlib.pyplot
1 |
import matplotlib.pyplot as plt |
Давайте сразу визуализируем какие-нибудь данные. Например, посещаемость сайта urvanov.ru по месяцам за 2018 год.
Месяц | Уникальных посетителей |
1 | 17248 |
2 | 19793 |
3 | 19858 |
4 | 21509 |
5 | 20924 |
6 | 21502 |
7 | 18987 |
8 | 16865 |
9 | 15449 |
10 | 17478 |
11 | 19399 |
12 | 20060 |
Загоним их в списки на Python:
1 2 3 |
months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] visitors= [17248, 19793, 19858, 21509, 20924, 21502, 18987, 16865, 15449, 17478, 19399, 20060] |
Отлично. Нарисовать график можно просто вызвав:
1 |
plt.plot(months, visitors) |
Полный код:
1 2 3 4 5 6 7 |
import matplotlib.pyplot as plt months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] visitors= [17248, 19793, 19858, 21509, 20924, 21502, 18987, 16865, 15449, 17478, 19399, 20060] plt.plot(months, visitors) |
Запустите этот код на выполнение. Результат будет следующим:

Выглядит не очень. Сразу видны недостатки:
- Ось Y начинается не с 0, что очень сильно затрудняет восприятие графика. Кажется, что на девятом месяце посещаемость упала почти до нуля, но на самом деле всё было не так плохо.
- Числа с номерами месяцев вывелись не все.
- Хорошо бы иметь подпись осей и легенду.
Для того чтобы ось Y начиналась с 0 нужно использовать функцию метод axis, в который передаётся список, содержащий четыре значения: минимальное значение для оси X, максимальное значение для оси X, минимальное значение для оси Y, максимальное значение для оси Y:
1 |
plt.axis([1, 12, 0, 25000]) |
Результат:

Добавим подписи осей и заголовок:
1 2 3 4 5 6 |
# Подпись оси Y plt.ylabel("Посетители") # Подпись оси X plt.xlabel("Месяц") # Заголовок диаграммы plt.title("Посещаемость сайта urvanov.ru") |

Легендой называют небольшую табличку, в которой указан цвет линии и подпись. Для создания легенды используется метод legend, которому передаётся список подписей к графикам. В данном случае у нас только один:
1 |
plt.legend(["Посетители"]) |

Сейчас мы рисовали обычный линейный график, но можно рисовать столбцами (всё прямо как в Excel). Для этого вызов функции plot нужно заменить на вызов bar:
1 2 |
# plt.plot(months, visitors) plt.bar(months, visitors) |
Результат:

Отлично. Выглядит здорово. Но хотелось бы, чтобы вместо чисел с номером месяца отображались названия месяцев:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
monthLabels = ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"] plt.xticks(months, monthLabels, rotation="vertical") |
Даже не знаю, стоит ли здесь объяснять. Мы объявляем список с названиями месяцев, а затем вызываем метод xticks, которому передаём в качестве первого параметра наши значения оси x, а в качестве второго параметра передаём список подписей. Также указываем , что подписи должны быть расположены вертикально (горизонтально они будут занимать слишком много места):

На всякий случай приведу получившуюся программу на Python целиком:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
import matplotlib.pyplot as plt months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] visitors= [17248, 19793, 19858, 21509, 20924, 21502, 18987, 16865, 15449, 17478, 19399, 20060] # plt.plot(months, visitors) plt.bar(months, visitors) plt.axis([1, 12, 0, 25000]) # Подпись оси Y plt.ylabel("Посетители") # Подпись оси X plt.xlabel("Месяц") # Заголовок диаграммы plt.title("Посещаемость сайта urvanov.ru") plt.legend(["Посетители"]) monthLabels = ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"] plt.xticks(months, monthLabels, rotation="vertical") |
Знаете, пока что всё это сильно напоминает то, что мы проходили при изучении MATLAB в университете…