Шаг 93.
Язык Python. Визуализация данных. Библиотека Seaborn. ... . Линейный график. Повышение информативности графика. Настройка толщины линии

    На этом шаге мы рассмотрим параметры, применяемые для настройки толщины линии.

    Следующим способом сегментации данных является задание толщины линии, за это отвечает параметр 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()
Архив с файлом можно взять здесь.

    На следующем шаге мы рассмотрим визуализацию временных рядов.




Предыдущий шаг Содержание Следующий шаг