Шаг 88.
Язык Python. Визуализация данных. Библиотека Seaborn. ... Линейный график. Отображение математического ожидания и доверительных интервалов

    На этом шаге мы рассмотрим способы отображения таких интервалов.

    Обратите внимание, что в предыдущих примерах, значения из набора данных, который мы указывали в качестве параметра для оси абсцисс (ось x), не повторялись. Построим график зависимости val_y от val_z. Для этих данных указанное выше свойство уже не будет выполняться: одному и тому же значению val_z (например, 0) будет соответствовать несколько значений val_y (в нашем случае - это 1 и 9).

    Построим линейный график:

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd

sns.set_style("darkgrid")
np.random.seed(123)
sample = [i for i in range(10)]
y = np.random.randint(10, size=len(sample))
z = np.random.randint(4, size=len(sample))
data = [sample, y, z]
df = pd.DataFrame({'sample': sample, 'y_val': y, 'z_val': z})
sns.lineplot(x='z_val', y='y_val', data=df)

plt.show()
Архив с файлом можно взять здесь.


Рис.1. Зависимость параметра y_val от z_val

    В этом случае по оси ординат будут откладываться не значения параметра у, а его математическое ожидание. Например для z_val=0, y_val=(l+9)/2=5, что мы и видим на графике. Более светлая область вокруг линии - это 95% доверительный интервал, если вместо него необходимо отобразить стандартное отклонение, то следует присвоить параметру ci функции lineplot() значение 'sd':

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd

sns.set_style("darkgrid")
np.random.seed(123)
sample = [i for i in range(10)]
y = np.random.randint(10, size=len(sample))
z = np.random.randint(4, size=len(sample))
data = [sample, y, z]
df = pd.DataFrame({'sample': sample, 'y_val': y, 'z_val': z})
sns.lineplot(x='z_val', y='y_val', ci='sd', data=df)

plt.show()
Архив с файлом можно взять здесь.


Рис.2. График зависимости с отображением стандартного отклонения

    Отображение доверительного интервала (или стандартного отклонения) можно отключить, передав в ci значение None:

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd

sns.set_style("darkgrid")
np.random.seed(123)
sample = [i for i in range(10)]
y = np.random.randint(10, size=len(sample))
z = np.random.randint(4, size=len(sample))
data = [sample, y, z]
df = pd.DataFrame({'sample': sample, 'y_val': y, 'z_val': z})
sns.lineplot(x='z_val', y='y_val', ci=None, data=df)

plt.show()
Архив с файлом можно взять здесь.


Рис.3. Отключение отображения доверительного интервала

    На следующем шаге мы закончим изучение этого вопроса.




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