Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Васильев Ю. - Python для data science (Библиотека программиста) - 2023.pdf
Скачиваний:
8
Добавлен:
07.04.2024
Размер:
7.21 Mб
Скачать

174      Глава 8. Визуализация

гистограмма на рис. 8.5 показывает частотность диапазонов окладов сотрудников отдела продаж.

На гистограмме оклады сгруппированы в диапазоны по $50, а каждый столбик представляет собой количество сотрудников с определенным размером оклада. Визуализация наглядно демонстрирует, насколько отличается количество сотрудников, зарабатывающих от $1200 до $1250, от количества сотрудников с окладом в других диапазонах, например от $1250 до $1300.

Е а а а

10

 

 

 

8

 

 

 

6

 

 

 

Ча а

 

 

 

4

 

 

 

2

 

 

 

0

 

 

 

$1100

$1200

$1300 $1400 $1500 $1600

$1700 $1800

 

 

О а ( а — $50)

 

Рис. 8.5. Гистограмма распределения окладов

Построение графиков с помощью Matplotlib

Теперь, когда вы познакомились с наиболее распространенными типами диаграмм, рассмотрим, как их создавать с помощью Matplotlib, одной из самых популярных библиотек Python для визуализации данных. Вы научитесь строить линейные, круговые, столбчатые диаграммы и гистограммы.

Каждая визуализация Matplotlib, или figure, строится из иерархии вложенных объектов. Можно работать с этими объектами напрямую, чтобы создавать визуализации с широкими возможностями настроек, или управлять объектами опосредованно — через функции модуля matplotlib.pyplot. Последний подход проще, и часто его вполне достаточно для создания базовых графиков и диаграмм.

Построение графиков с помощью Matplotlib      175

Установка Matplotlib

Проверьте, установлен ли уже Matplotlib, импортировав его в текущую сессию интерпретатора Python:

> import matplotlib

Если вы получите ModuleNotFoundError, установите Matplotlib с помощью pip следующим образом:

$ python -m pip install -U matplotlib

Использование matplotlib.pyplot

Модуль matplotlib.pyplot, называемый обычно в коде plt, представляет собой набор функций для построения привлекательных графиков. Модуль позволяет легко задавать различные характеристики фигуры, такие как ее название, метки осей и т. д. Например, код ниже строит линейный график, отображающий цену акций Tesla на момент закрытия торгов в течение пяти дней подряд:

from matplotlib import pyplot as plt

days = ['2021-01-04', '2021-01-05', '2021-01-06', '2021-01-07', '2021-01-08'] prices = [729.77, 735.11, 755.98, 816.04, 880.02]

plt.plot(days,prices) plt.title('NASDAQ: TSLA') plt.xlabel('Дата') plt.ylabel('USD') plt.show()

Сначала мы определяем набор данных в виде двух списков: days, содержащий даты, которые будут отображаться по оси x, и prices с ценами, которые будут располагаться по оси y. Затем мы создаем объект plot, часть графика, которая собственно содержит данные, с помощью функции plt.plot(), передавая ей данные для осей x и y. В следующих трех строках кода мы настраиваем график: добавляем заголовок с помощью plt.title()и метки для осей x и y с помощью plt.xlabel() и plt.ylabel(). Наконец, выводим рисунок на экран с помощью plt.show(). На рис. 8.6 показан результат.

По умолчанию plt.plot() строит визуализацию в виде набора линий, соединяющих точки данных, которые наносятся на оси x и y. Для оси y Matplotlib

176      Глава 8. Визуализация

автоматически выбрал диапазон от 720 до 880 с интервалами по $20, чтобы легко видеть цену акций в каждый из дней.

USD

NASDAQ: TSLA

880

860

840

820

800

780

760

740

2021-01-04

2021-01-05

2021-01-06

2021-01-07

2021-01-08

Да а

Рис. 8.6. Простой линейный график, созданный с помощью модуля matplotlib.pyplot

Построить базовую круговую диаграмму так же просто, как и линейный график. Например, следующий код генерирует круговую диаграмму с рис. 8.4:

import matplotlib.pyplot as plt

regions = ['Новая Англия', 'Северо-восток', 'Средний Запад'] sales = [882703, 532648, 714406]

plt.pie(sales, labels=regions, autopct='%1.1f%%') plt.title('Продажи по регионам')

plt.show()

Скрипт следует той же базовой схеме, которую мы использовали для создания линейного графика: определяем данные для построения графика, создаем его, настраиваем характеристики и выводим на экран. На этот раз данные включают список регионов, которые будут служить метками для каждого среза круговой диаграммы, а также итоговые продажи для каждого региона. Значения списка

Построение графиков с помощью Matplotlib      177

определяют размер каждого среза. Чтобы составить круговой график, а не линейный, вызываем функцию plt.pie(), передав sales в качестве данных для построения графика и regions в качестве меток для данных. Мы также используем параметр autopct, чтобы значения в частях круга выражались в процентах. Используем форматирование строк Python для отображения значений с точностью до десятых долей процента.

Теперь визуализируем те же входные данные в виде столбчатой диаграммы, как показано на рис. 8.3:

import matplotlib.pyplot as plt

regions = ['Новая Англия', 'Северо-восток', 'Средний Запад'] sales = [882703, 532648, 714406]

plt.bar(regions, sales) plt.xlabel("Регионы") plt.ylabel("Продажи")

plt.title("Годовой объем продаж по регионам")

plt.show()

Мы передаем список regions в функцию plt.bar() в качестве меток оси x для столбцов. Второй аргумент, который мы передаем в plt.bar(), — это список со значениями продаж, соответствующих товарам в списке regions. И здесь, и в примере с круговой диаграммой можно использовать отдельные списки для меток и объема продаж, поскольку порядок элементов в списке Python является постоянным.

Работа с объектами Figure и Axes

По своей сути визуализация Matplotlib строится из двух основных типов объектов: объекта Figure и одного или нескольких объектов Axes. В предыдущих примерах matplotlib.pyplot служил интерфейсом для непрямого взаимодействия с этими объектами, позволяя настраивать некоторые элементы визуализации. Однако можно получить больше контроля над процессом визуализации, работая непосредственно с самими объектами Figure и Axes.

Объект Figure является внешним верхнеуровневым контейнером визуализации Matplotlib. Он может включать один или несколько графиков. Объект Figure полезен, когда необходимо совершить операции с отображаемым рисунком в целом, например изменить размер или сохранить в файл. Между тем каждый объект Axesпредставляет один график на рисунке. Объект Axesиспользуется для настройки графика и определения его расположения на изображении. Например,­ можно задать его систему координат и отметить позиции на оси.