HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#статьи</a></p>
1 <p><a>#статьи</a></p>
2 <ul><li>13 фев 2023</li>
2 <ul><li>13 фев 2023</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><p>Разбираемся в том, как работает библиотека Matplotlib, и строим первые графики.</p>
4 </ul><p>Разбираемся в том, как работает библиотека Matplotlib, и строим первые графики.</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
6 <p>Изучает Python, его библиотеки и занимается анализом данных. Любит путешествовать в горах.</p>
6 <p>Изучает Python, его библиотеки и занимается анализом данных. Любит путешествовать в горах.</p>
7 <p>Matplotlib - популярная Python-библиотека для визуализации данных. Она используется для создания любых видов графиков: линейных, круговых диаграмм, построчных гистограмм и других - в зависимости от задач.</p>
7 <p>Matplotlib - популярная Python-библиотека для визуализации данных. Она используется для создания любых видов графиков: линейных, круговых диаграмм, построчных гистограмм и других - в зависимости от задач.</p>
8 <p>В этой статье научимся импортировать библиотеку и на примерах разберём основные способы визуализации данных.</p>
8 <p>В этой статье научимся импортировать библиотеку и на примерах разберём основные способы визуализации данных.</p>
9 <p>Библиотека Matplotlib - пакет для визуализации данных в Python, который позволяет работать с данными на нескольких уровнях:</p>
9 <p>Библиотека Matplotlib - пакет для визуализации данных в Python, который позволяет работать с данными на нескольких уровнях:</p>
10 <ul><li>с помощью модуля Pyplot, который рассматривает график как единое целое;</li>
10 <ul><li>с помощью модуля Pyplot, который рассматривает график как единое целое;</li>
11 <li>через объектно-ориентированный интерфейс, когда каждая фигура или её часть является отдельным объектом, - это позволяет выборочно менять их свойства и отображение.</li>
11 <li>через объектно-ориентированный интерфейс, когда каждая фигура или её часть является отдельным объектом, - это позволяет выборочно менять их свойства и отображение.</li>
12 </ul><p>В этой статье мы будем работать с модулем Pyplot, которого достаточно для построения графиков.</p>
12 </ul><p>В этой статье мы будем работать с модулем Pyplot, которого достаточно для построения графиков.</p>
13 <p>Matplotlib используют для визуализации данных любой сложности. Библиотека позволяет строить разные варианты графиков: линейные, трёхмерные, диаграммы рассеяния и другие, а также комбинировать их.</p>
13 <p>Matplotlib используют для визуализации данных любой сложности. Библиотека позволяет строить разные варианты графиков: линейные, трёхмерные, диаграммы рассеяния и другие, а также комбинировать их.</p>
14 <p>Дополнительные библиотеки позволяют расширить возможности анализа данных. Например, модуль Cartopy добавляет возможность работать с картографической информацией. Подробно про Matplotlib можно узнать<a>из официальной документации</a>.</p>
14 <p>Дополнительные библиотеки позволяют расширить возможности анализа данных. Например, модуль Cartopy добавляет возможность работать с картографической информацией. Подробно про Matplotlib можно узнать<a>из официальной документации</a>.</p>
15 Сочетание двух типов графиков в Matplotlib<em>Инфографика: <a>Matplotlib</a></em>Визуализация распределения температур на карте Земли с помощью модуля Cartopy<em>Изображение: <a>Cartopy</a>/<a>SciTools</a></em><p>Сама Matplotlib является основой для других библиотек - например, Seaborn позволяет проще создавать графики и имеет больше возможностей для косметического улучшения их внешнего вида. Но Matplotlib - это базовая библиотека для визуализации данных, незаменимая в анализе данных.</p>
15 Сочетание двух типов графиков в Matplotlib<em>Инфографика: <a>Matplotlib</a></em>Визуализация распределения температур на карте Земли с помощью модуля Cartopy<em>Изображение: <a>Cartopy</a>/<a>SciTools</a></em><p>Сама Matplotlib является основой для других библиотек - например, Seaborn позволяет проще создавать графики и имеет больше возможностей для косметического улучшения их внешнего вида. Но Matplotlib - это базовая библиотека для визуализации данных, незаменимая в анализе данных.</p>
16 <p>При погружении в Matplotlib можно встретить упоминание двух модулей - Pyplot и Pylab. Важно понимать, какой из них использовать в работе и почему они появились. Разберёмся в терминологии.</p>
16 <p>При погружении в Matplotlib можно встретить упоминание двух модулей - Pyplot и Pylab. Важно понимать, какой из них использовать в работе и почему они появились. Разберёмся в терминологии.</p>
17 <p>Библиотека Matplotlib - это пакет для визуализации данных в Python. Pyplot - это модуль в пакете Matplotlib. Его вы часто будете видеть в коде как matplotlib.pyplot. Модуль помогает автоматически создавать оси, фигуры и другие компоненты, не задумываясь о том, как это происходит. Именно Pyplot используется в большинстве случаев.</p>
17 <p>Библиотека Matplotlib - это пакет для визуализации данных в Python. Pyplot - это модуль в пакете Matplotlib. Его вы часто будете видеть в коде как matplotlib.pyplot. Модуль помогает автоматически создавать оси, фигуры и другие компоненты, не задумываясь о том, как это происходит. Именно Pyplot используется в большинстве случаев.</p>
18 <p>Pylab - это ещё один модуль, который устанавливается вместе с пакетом Matplotlib. Он одновременно импортирует Pyplot и библиотеку NumPy для работы с массивами в интерактивном режиме или для доступа к функциям черчения при работе с данными.</p>
18 <p>Pylab - это ещё один модуль, который устанавливается вместе с пакетом Matplotlib. Он одновременно импортирует Pyplot и библиотеку NumPy для работы с массивами в интерактивном режиме или для доступа к функциям черчения при работе с данными.</p>
19 <p>Сейчас Pylab имеет только историческое значение - он облегчал переход с MATLAB на Matplotlib, так как позволял обходиться без операторов импорта (а именно так привыкли работать пользователи MATLAB). Вы можете встретиться с Pylab в примерах кода на разных сайтах, но на практике использовать модуль не придётся.</p>
19 <p>Сейчас Pylab имеет только историческое значение - он облегчал переход с MATLAB на Matplotlib, так как позволял обходиться без операторов импорта (а именно так привыкли работать пользователи MATLAB). Вы можете встретиться с Pylab в примерах кода на разных сайтах, но на практике использовать модуль не придётся.</p>
20 <p>Matplotlib - универсальная библиотека, которая работает в Python на Windows, macOS и Linux. При работе с Google Colab или Jupyter Notebook устанавливать Python и Matplotlib не понадобится - язык программирования и библиотека уже доступны "из коробки". Но если вы решили писать код в другой IDE, например в Visual Studio Code, то сначала<a>установите Python</a>, а затем библиотеку<strong>Learn</strong>через терминал:</p>
20 <p>Matplotlib - универсальная библиотека, которая работает в Python на Windows, macOS и Linux. При работе с Google Colab или Jupyter Notebook устанавливать Python и Matplotlib не понадобится - язык программирования и библиотека уже доступны "из коробки". Но если вы решили писать код в другой IDE, например в Visual Studio Code, то сначала<a>установите Python</a>, а затем библиотеку<strong>Learn</strong>через терминал:</p>
21 pip3 install matplotlib<p>Теперь можно переходить к импорту библиотеки:</p>
21 pip3 install matplotlib<p>Теперь можно переходить к импорту библиотеки:</p>
22 import matplotlib.pyplot as plt<p>Сокращение plt для библиотеки - общепринятое. Вы встретите его в официальной документации, книгах и в ноутбуках других людей. Так что используйте его.</p>
22 import matplotlib.pyplot as plt<p>Сокращение plt для библиотеки - общепринятое. Вы встретите его в официальной документации, книгах и в ноутбуках других людей. Так что используйте его.</p>
23 <p>Для начала создадим две переменные - x и y, которые будут содержать координаты точек по осям х и у:</p>
23 <p>Для начала создадим две переменные - x и y, которые будут содержать координаты точек по осям х и у:</p>
24 x = [1, 2, 3, 4, 5] y = [25, 32, 34, 20, 25]<p>Теперь построим график, который соединит эти точки:</p>
24 x = [1, 2, 3, 4, 5] y = [25, 32, 34, 20, 25]<p>Теперь построим график, который соединит эти точки:</p>
25 plt.plot(x, y) plt.show()<em>Скриншот: Skillbox Media</em><p>Мы получили обычный линейный график. Разберём каждую команду:</p>
25 plt.plot(x, y) plt.show()<em>Скриншот: Skillbox Media</em><p>Мы получили обычный линейный график. Разберём каждую команду:</p>
26 <ul><li><em>plt.plot()</em> - стандартная функция, которая строит график в соответствии со значениями, которые ей были переданы. Мы передали в неё координаты точек;</li>
26 <ul><li><em>plt.plot()</em> - стандартная функция, которая строит график в соответствии со значениями, которые ей были переданы. Мы передали в неё координаты точек;</li>
27 <li>plt.show() - функция, которая отвечает за вывод визуализированных данных на экран. Её можно и не указывать, но тогда, помимо красивой картинки, мы увидим разную техническую информацию.</li>
27 <li>plt.show() - функция, которая отвечает за вывод визуализированных данных на экран. Её можно и не указывать, но тогда, помимо красивой картинки, мы увидим разную техническую информацию.</li>
28 </ul><p>Дополним наш первый график заголовком и подписями осей:</p>
28 </ul><p>Дополним наш первый график заголовком и подписями осей:</p>
29 plt.plot(x, y) plt.xlabel('Ось х') #Подпись для оси х plt.ylabel('Ось y') #Подпись для оси y plt.title('Первый график') #Название plt.show()<p>Смотрим на результат:</p>
29 plt.plot(x, y) plt.xlabel('Ось х') #Подпись для оси х plt.ylabel('Ось y') #Подпись для оси y plt.title('Первый график') #Название plt.show()<p>Смотрим на результат:</p>
30 <em>Скриншот: Skillbox Media</em><p>С помощью Matplotlib можно настроить отображение любого графика. Например, мы можем изменить цвет линии, а также выделить точки, координаты которых задаём в переменных:</p>
30 <em>Скриншот: Skillbox Media</em><p>С помощью Matplotlib можно настроить отображение любого графика. Например, мы можем изменить цвет линии, а также выделить точки, координаты которых задаём в переменных:</p>
31 plt.plot(x, y, color='green', marker='o', markersize=7)<p>Теперь точки хорошо видны, а цвет точек и линии изменился на зелёный:</p>
31 plt.plot(x, y, color='green', marker='o', markersize=7)<p>Теперь точки хорошо видны, а цвет точек и линии изменился на зелёный:</p>
32 <em>Скриншот<em>: Skillbox Media</em></em><p>Подробно про настройку параметров функции plt.plot() можно<a>прочесть в официальной документации</a>.</p>
32 <em>Скриншот<em>: Skillbox Media</em></em><p>Подробно про настройку параметров функции plt.plot() можно<a>прочесть в официальной документации</a>.</p>
33 <p>Диаграмма рассеяния используется для оценки взаимосвязи двух переменных, значения которых откладываются по разным осям. Для её построения используется функция plt.scatter(), аргументами которой выступают переменные с дискретными значениями:</p>
33 <p>Диаграмма рассеяния используется для оценки взаимосвязи двух переменных, значения которых откладываются по разным осям. Для её построения используется функция plt.scatter(), аргументами которой выступают переменные с дискретными значениями:</p>
34 x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] y = [25, 32, 34, 20, 25, 23, 21, 33, 19, 28] plt.scatter(x, y) plt.show()<p>Диаграмма рассеяния выглядит как множество отдельных точек:</p>
34 x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] y = [25, 32, 34, 20, 25, 23, 21, 33, 19, 28] plt.scatter(x, y) plt.show()<p>Диаграмма рассеяния выглядит как множество отдельных точек:</p>
35 <em>Скриншот<em>: Skillbox Media</em></em><p>Такой тип визуализации позволяет удобно сравнивать значения отдельных переменных. В столбчатой диаграмме длина столбцов пропорциональна показателям, которые они отображают. Как правило, одна из осей соответствует одной категории, а вторая - её дискретному значению.</p>
35 <em>Скриншот<em>: Skillbox Media</em></em><p>Такой тип визуализации позволяет удобно сравнивать значения отдельных переменных. В столбчатой диаграмме длина столбцов пропорциональна показателям, которые они отображают. Как правило, одна из осей соответствует одной категории, а вторая - её дискретному значению.</p>
36 <p>Например, столбчатая диаграмма позволяет наглядно показать величину прибыли по месяцам. Построим следующий график:</p>
36 <p>Например, столбчатая диаграмма позволяет наглядно показать величину прибыли по месяцам. Построим следующий график:</p>
37 x = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май'] y = [2, 4, 3, 1, 7] plt.bar(x, y, label='Величина прибыли') #Параметр label позволяет задать название величины для легенды plt.xlabel('Месяц года') plt.ylabel('Прибыль, в млн руб.') plt.title('Пример столбчатой диаграммы') plt.legend() plt.show()<p>Столбчатая диаграмма позволяет увидеть динамику изменения прибыли по месяцам:</p>
37 x = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май'] y = [2, 4, 3, 1, 7] plt.bar(x, y, label='Величина прибыли') #Параметр label позволяет задать название величины для легенды plt.xlabel('Месяц года') plt.ylabel('Прибыль, в млн руб.') plt.title('Пример столбчатой диаграммы') plt.legend() plt.show()<p>Столбчатая диаграмма позволяет увидеть динамику изменения прибыли по месяцам:</p>
38 <em>Скриншот<em>: Skillbox Media</em></em><p>Для некоторых задач полезно объединить несколько типов графиков, например столбчатую диаграмму и линейный график. Доработаем его, добавив к столбцам точки со значениями прибыли, и соединим их:</p>
38 <em>Скриншот<em>: Skillbox Media</em></em><p>Для некоторых задач полезно объединить несколько типов графиков, например столбчатую диаграмму и линейный график. Доработаем его, добавив к столбцам точки со значениями прибыли, и соединим их:</p>
39 x = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май'] y = [2, 4, 3, 1, 7] plt.bar(x, y, label='Величина прибыли') #Параметр label позволяет задать название величины для легенды plt.plot(x, y, color='green', marker='o', markersize=7) plt.xlabel('Месяц года') plt.ylabel('Прибыль, в млн руб.') plt.title('Комбинирование графиков') plt.legend() plt.show()<p>Теперь на одном экране мы видим сразу оба типа:</p>
39 x = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май'] y = [2, 4, 3, 1, 7] plt.bar(x, y, label='Величина прибыли') #Параметр label позволяет задать название величины для легенды plt.plot(x, y, color='green', marker='o', markersize=7) plt.xlabel('Месяц года') plt.ylabel('Прибыль, в млн руб.') plt.title('Комбинирование графиков') plt.legend() plt.show()<p>Теперь на одном экране мы видим сразу оба типа:</p>
40 <em>Скриншот<em>: Skillbox Media</em></em><p>Всё получилось. Но сейчас линейный график видно плохо - он просто теряется на синем фоне столбцов. Увеличим прозрачность столбчатой диаграммы с помощью параметра alpha:</p>
40 <em>Скриншот<em>: Skillbox Media</em></em><p>Всё получилось. Но сейчас линейный график видно плохо - он просто теряется на синем фоне столбцов. Увеличим прозрачность столбчатой диаграммы с помощью параметра alpha:</p>
41 plt.bar(x, y, label='Величина прибыли', alpha=0.5)<p>Параметр alpha может принимать значения от 0 до 1, где 0 - полная прозрачность, а 1 - отсутствие прозрачности. Посмотрим на результат:</p>
41 plt.bar(x, y, label='Величина прибыли', alpha=0.5)<p>Параметр alpha может принимать значения от 0 до 1, где 0 - полная прозрачность, а 1 - отсутствие прозрачности. Посмотрим на результат:</p>
42 <em>Скриншот<em>: Skillbox Media</em></em><p>Теперь линейный график хорошо виден и мы можем оценивать динамику изменения прибыли.</p>
42 <em>Скриншот<em>: Skillbox Media</em></em><p>Теперь линейный график хорошо виден и мы можем оценивать динамику изменения прибыли.</p>
43 <p>Круговую диаграмму используют для отображения состава групп. Например, мы можем наглядно показать, какие марки автомобилей преобладают на дорогах города:</p>
43 <p>Круговую диаграмму используют для отображения состава групп. Например, мы можем наглядно показать, какие марки автомобилей преобладают на дорогах города:</p>
44 vals = [24, 17, 53, 21, 35] labels = ["Ford", "Toyota", "BMW", "Audi", "Jaguar"] plt.pie(vals, labels=labels) plt.title("Распределение марок автомобилей на дороге") plt.show()<p>Результат:</p>
44 vals = [24, 17, 53, 21, 35] labels = ["Ford", "Toyota", "BMW", "Audi", "Jaguar"] plt.pie(vals, labels=labels) plt.title("Распределение марок автомобилей на дороге") plt.show()<p>Результат:</p>
45 <em>Скриншот<em>: Skillbox Media</em></em><p>Так информация нагляднее, но непонятно, какая именно доля приходится на каждую марку автомобиля. Поэтому круговые диаграммы всегда лучше дополнять значениями в процентах. Отредактируем наш код, добавив к функции pie параметр autopct:</p>
45 <em>Скриншот<em>: Skillbox Media</em></em><p>Так информация нагляднее, но непонятно, какая именно доля приходится на каждую марку автомобиля. Поэтому круговые диаграммы всегда лучше дополнять значениями в процентах. Отредактируем наш код, добавив к функции pie параметр autopct:</p>
46 vals = [24, 17, 53, 21, 35] labels = ["Ford", "Toyota", "BMW", "Audi", "Jaguar"] plt.pie(vals, labels=labels, autopct='%1.1f%%') plt.title("Распределение марок автомобилей на дороге") plt.show()<p>В параметр мы передаём формат отображения числа. В нашем случае это будет целое число с одним знаком после запятой. Запустим код и посмотрим на результат:</p>
46 vals = [24, 17, 53, 21, 35] labels = ["Ford", "Toyota", "BMW", "Audi", "Jaguar"] plt.pie(vals, labels=labels, autopct='%1.1f%%') plt.title("Распределение марок автомобилей на дороге") plt.show()<p>В параметр мы передаём формат отображения числа. В нашем случае это будет целое число с одним знаком после запятой. Запустим код и посмотрим на результат:</p>
47 <em>Скриншот<em>: Skillbox Media</em></em><p>Теперь сравнить категории проще, так как мы видим числовые значения.</p>
47 <em>Скриншот<em>: Skillbox Media</em></em><p>Теперь сравнить категории проще, так как мы видим числовые значения.</p>
48 <p>Построим столбчатый график с накоплением. Он позволяет оценить динамику соотношения значений одной переменной. Попробуем показать, как соотносится количество устройств на Android и iOS в разные годы:</p>
48 <p>Построим столбчатый график с накоплением. Он позволяет оценить динамику соотношения значений одной переменной. Попробуем показать, как соотносится количество устройств на Android и iOS в разные годы:</p>
49 labels = ['2017', '2018', '2019', '2020', '2021'] android_users = [85, 85.1, 86, 86.2, 86] ios_users = [14.5, 14.8, 13, 13.8, 14.0] width = 0.35 #Задаём ширину столбцов fig, ax = plt.subplots() ax.bar(labels, android_users, width, label='Android') ax.bar(labels, ios_users, width, bottom=android_users, label='iOS') #Указываем с помощью параметра bottom, что значения в столбце должны быть выше значений переменной android_users ax.set_ylabel('Соотношение, в %') ax.set_title('Распределение устройств на Android и iOS') ax.legend(loc='lower left', title='Устройства') #Сдвигаем легенду в нижний левый угол, чтобы она не перекрывала часть графика plt.show()<p>Смотрим на результат:</p>
49 labels = ['2017', '2018', '2019', '2020', '2021'] android_users = [85, 85.1, 86, 86.2, 86] ios_users = [14.5, 14.8, 13, 13.8, 14.0] width = 0.35 #Задаём ширину столбцов fig, ax = plt.subplots() ax.bar(labels, android_users, width, label='Android') ax.bar(labels, ios_users, width, bottom=android_users, label='iOS') #Указываем с помощью параметра bottom, что значения в столбце должны быть выше значений переменной android_users ax.set_ylabel('Соотношение, в %') ax.set_title('Распределение устройств на Android и iOS') ax.legend(loc='lower left', title='Устройства') #Сдвигаем легенду в нижний левый угол, чтобы она не перекрывала часть графика plt.show()<p>Смотрим на результат:</p>
50 <em>Скриншот<em>: Skillbox Media</em></em><p>График позволяет увидеть, что соотношение устройств, работающих на Android и iOS, постепенно меняется - устройств на Android становится больше.</p>
50 <em>Скриншот<em>: Skillbox Media</em></em><p>График позволяет увидеть, что соотношение устройств, работающих на Android и iOS, постепенно меняется - устройств на Android становится больше.</p>
51 <p>Matplotlib - мощная библиотека для визуализации данных в Python. В этой статье мы познакомились только с самыми основами. Ещё много полезной информации можно найти<a>в официальной документации</a>.</p>
51 <p>Matplotlib - мощная библиотека для визуализации данных в Python. В этой статье мы познакомились только с самыми основами. Ещё много полезной информации можно найти<a>в официальной документации</a>.</p>
52 <p>Но если вы решили действительно углубиться в возможности библиотеки и визуализацию данных, то здесь помогут книги:</p>
52 <p>Но если вы решили действительно углубиться в возможности библиотеки и визуализацию данных, то здесь помогут книги:</p>
53 <ul><li>Mastering matplotlib Дункана Макгреггора;</li>
53 <ul><li>Mastering matplotlib Дункана Макгреггора;</li>
54 <li>Hands-on Matplotlib: Learn Plotting and Visualizations with Python 3 Ашвина Паянкара;</li>
54 <li>Hands-on Matplotlib: Learn Plotting and Visualizations with Python 3 Ашвина Паянкара;</li>
55 <li>Matplotlib 3.0 Cookbook: Over 150 recipes to create highly detailed interactive visualizations using Python Рао Полади.</li>
55 <li>Matplotlib 3.0 Cookbook: Over 150 recipes to create highly detailed interactive visualizations using Python Рао Полади.</li>
56 </ul><p>Data Science с нуля: пробуем профессии на практике за 5 дней</p>
56 </ul><p>Data Science с нуля: пробуем профессии на практике за 5 дней</p>
57 <p>Вы разберётесь в трёх главных направлениях data science: машинном обучении, разработке на Python и визуализации данных. Решите, какая сфера вам ближе, и выполните 4 реальные задачи с данными.</p>
57 <p>Вы разберётесь в трёх главных направлениях data science: машинном обучении, разработке на Python и визуализации данных. Решите, какая сфера вам ближе, и выполните 4 реальные задачи с данными.</p>
58 <p><a>Пройти бесплатно</a></p>
58 <p><a>Пройти бесплатно</a></p>
59 <a><b>Попробуйте data science на бесплатном курсе</b>Пройдите курс по data science и изучите 3 направления в работе с данными. Решите, в какой сфере хотите развиваться дальше, и получите ценные подарки. Пройти курс →</a>
59 <a><b>Попробуйте data science на бесплатном курсе</b>Пройдите курс по data science и изучите 3 направления в работе с данными. Решите, в какой сфере хотите развиваться дальше, и получите ценные подарки. Пройти курс →</a>