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