Освоение 1 участка Seaborn за раз
Python Vizardry — это серия коротких статей о различных библиотеках визуализации для Python, в которых мы рассматриваем по одному графику за раз. Это краткое руководство, которое поможет вам освоиться с интуицией и кодом. Не стесняйтесь держать эти статьи под рукой в качестве чит-блокнотов для указанных сюжетов.
Сиборн?
Seaborn — это библиотека визуализации данных Python, основанная на Matplotlib. Matplotlib в первую очередь ориентирован на предоставление низкоуровневых строительных блоков для создания графиков, Seaborn предоставляет высокоуровневый интерфейс для создания привлекательной и информативной статистической графики. В то время как Matplotlib обеспечивает большую гибкость и возможности настройки, Seaborn часто проще в использовании и создает более полированные цифры с меньшим количеством кода.
Функции:
- Встроенная поддержка визуализации статистических моделей и их неопределенностей
- Предоставляет функции для визуализации сложных наборов данных, таких как парные диаграммы, которые упрощают изучение взаимосвязей.
- Расширенные параметры цветовой палитры
- Поддержка построения графиков в различных контекстах (например, в блокноте Jupyter или на веб-странице).
Установка и импорт Seaborn
#Installing Seaborn pip install seaborn #Importing Seaborn import seaborn as sns #Importing the library import seaborn as sns
Загрузка набора данных
Набор данных «миль на галлон» — это встроенный набор данных в библиотеке Seaborn, который содержит информацию о различных моделях автомобилей и их эффективности использования топлива (измеряется в милях на галлон или миль на галлон). В наборе данных также есть данные о происхождении автомобиля, рабочем объеме, количестве цилиндров, лошадиных силах, весе, году выпуска и ускорении для каждого автомобиля. И, очевидно, название машины.
cars = sns.load_dataset('mpg')
Точечная диаграмма
Интуитивно это самый простой для понимания тип построения графика. У нас столько координат, сколько осей. Мы можем изобразить каждое отдельное наблюдение в виде точки в n-мерной декартовой системе координат.
Это способ визуально исследовать, как одна переменная влияет на другую, или, другими словами, взаимосвязь между двумя переменными.
В соответствии со стандартной практикой независимая переменная откладывается по оси x (горизонтальная ось), а зависимая переменная — по оси y (вертикальная ось). Так легче определить, что происходит с нашей зависимой переменной. Вы увидите, как.
Полученный график покажет, есть ли положительная, отрицательная связь или ее отсутствие между двумя переменными.
Seaborn.Scatterplot()
Это параметры, которые у нас есть при выполнении диаграммы рассеяния Seaborn.
seaborn.scatterplot( data=None, *, x=None, y=None, hue=None, size=None, style=None, palette=None, hue_order=None, hue_norm=None, sizes=None, size_order=None, size_norm=None, markers=True, style_order=None, legend='auto', ax=None, **kwargs )
Приступаем к построению…
Для нашего первого графика подойдет базовый x-y график «веса» автомобиля и «топливной эффективности».
sns.scatterplot( data=cars, x='weight', y='mpg' );
По логике вещей, мы видим обратную зависимость между весом и эффективностью использования топлива.
Давайте повлияем на то, как выглядит этот сюжет. Мы можем изменить маркеры, используя параметр marker. На момент написания этой статьи у вас есть 11 типов маркеров. Пока мы этим занимаемся, давайте также повлияем на размер маркеров, используя параметр s
sns.scatterplot( data=cars, x='weight', y='mpg', marker='*', s=150 );
Давайте изменим цвет маркеров, используя шестнадцатеричный код, назначенный параметру marker.
sns.scatterplot( data=cars, x='weight', y='mpg', marker='*', s=150, color='#FF5733' );
С перекрывающимися маркерами кажется хорошей идеей сделать их менее непрозрачными. Мы можем сделать это с помощью параметра alpha. Возьмем 0,5 альфа или прозрачность 50 %.
sns.scatterplot( data=cars, x='weight', y='mpg', marker=7, s=100, color='#581845', alpha=0.5 );
Здесь можно использовать параметры matplotlib. Например, мы можем добавить к маркерам edge_color.
sns.scatterplot( data=cars, x='weight', y='mpg', s=100, alpha=0.4, edgecolor='black' );
Добавим к этому. Мы можем изменить некоторые семантики, такие как оттенок, размер и стиль. Следовательно, мы можем добавить больше измерений к нашему графику, назначив категориальные переменные этим параметрам.
Просто чтобы мы не делали сюжет слишком шумным, я собираюсь отфильтровать автомобили с 4, 6 и 8 цилиндрами. Кроме того, добавьте еще одну категориальную переменную, помечающую автомобили старше 1975 года как ретро.
#Filtering to get 4,6,8 cylinder cars cars = cars.loc[cars.cylinders.isin([4,6,8]), :] #Labelling model_year cars['retro'] = cars.model_year < 75 #Plot sns.scatterplot( data=cars, x='weight', y='mpg', hue='origin', style='cylinders', size='retro' );
Обратите внимание, как мы смогли добавить гораздо больше информации к нашему графику без необходимости слишком много кодировать. Мы можем видеть, как кресты соответствуют более новым моделям автомобилей, а точки — более старым. Размер этих маркеров говорит нам, какое количество цилиндров соответствует двигателю, а цвет говорит нам о стране происхождения. Это небольшое обновление по сравнению с тем, что мы нарисовали ранее.
Давайте перейдем к более тонкой цветовой палитре.
sns.scatterplot( data=cars, x='weight', y='mpg', hue='origin', style='retro', size='cylinders', palette='pastel' );
У нас есть возможность определить порядок любой из этих семантик с помощью параметров hue_order, size_order и style_order. Давайте посмотрим на это в действии.
И пока мы на этом, давайте немного улучшим код, чтобы данные и оси были объявлены в одной строке, за которыми следовала семантика, а затем любые дополнительные параметры.
sns.scatterplot( data=cars, x='weight', y='mpg', hue='origin', style='retro', size='cylinders', hue_order=['japan', 'europe', 'usa'], size_order=[8, 6, 4], style_order=[True, False], palette='magma' );
Удачного заговора!
Вот ссылка на официальную документацию seaborn.scatterplot.