На этом шаге мы рассмотрим параметры, применяемые для настройки толщины линии.
Следующим способом сегментации данных является задание толщины линии, за это отвечает параметр size. Через него передаётся набор данных, который будет использован для разделения основного набора на линии различной толщины.
Для демонстрации произведём модификацию набора mpg, с которым мы работали на предыдущих шагах:
fn_filter = lambda x: True if x in [4, 8] else False fn_mod = lambda x: {4: 'four', 8: 'eight'}[x] df_mod1 = df[df['cylinders'].map(fn_filter)].copy() df_mod1['cylinders'] = df_mod1['cylinders'].map(fn_mod)
Отобразим на графике разной толщиной линии автомобили с восемью и четырёхцилиндровым двигателями:
sns.lineplot(x='model_year', y='horsepower', size='cylinders', data=df_mod1)
Рис.1. Демонстрация использования параметра size для разделения данных по количеству цилиндров
Вот полный текст приложения:
import matplotlib.pyplot as plt import seaborn as sns import pandas as pd sns.set_style("darkgrid") df = sns.load_dataset("mpg") fn_filter = lambda x: True if x in [4, 8] else False fn_mod = lambda x: {4: 'four', 8: 'eight'}[x] df_mod1 = df[df['cylinders'].map(fn_filter)].copy() df_mod1['cylinders'] = df_mod1['cylinders'].map(fn_mod) sns.lineplot(x='model_year', y='horsepower', size='cylinders', data=df_mod1) plt.show()
Дополнительно для работы с толщиной линии можно использовать параметры size_order и size_norm (см. 86 шаг, раздел "Параметры для повышения информативности графиков").
Изменим порядок задания толщины линии:
sns.lineplot(x='model_year', y='horsepower', size='cylinders', size_order=('four', 'eight'), data=df_mod1)
Рис.2. Демонстрация работы с параметром size_order
Вот полный текст приложения:
import matplotlib.pyplot as plt import seaborn as sns import pandas as pd sns.set_style("darkgrid") df = sns.load_dataset("mpg") fn_filter = lambda x: True if x in [4, 8] else False fn_mod = lambda x: {4: 'four', 8: 'eight'}[x] df_mod1 = df[df['cylinders'].map(fn_filter)].copy() df_mod1['cylinders'] = df_mod1['cylinders'].map(fn_mod) sns.lineplot(x='model_year', y='horsepower', size='cylinders', size_order=('four', 'eight'), data=df_mod1) plt.show()
На следующем шаге мы рассмотрим визуализацию временных рядов.