Seaborn Lineplot показывает обычную центральную линию вместо средней - PullRequest
2 голосов
/ 30 января 2020

У меня есть набор данных, состоящий из трех значений для каждого временного шага: однажды среднее значение, а также нижняя и верхняя границы ошибки.

name,year,area
test,2017,1.0376800009967053 #mean
test,2017,0.09936810445983806 #lower bound
test,2017,2.118230806622908 #upper bound and so on ...
test,2018,1.0
test,2018,0.13705391957353763
test,2018,2.1881023056535183
test,2019,1.2928531655977922
test,2019,0.17400072775054737
test,2019,3.016064939443665

Я хотел бы построить данные так, чтобы я получить заштрихованную область между верхней и нижней границами и иметь линию между ними, которая следует за средним значением в наборе данных.

Я пробовал seaborn.lineplot (https://seaborn.pydata.org/examples/errorband_lineplots.html), однако он вычисляет среднее значение значений дерева, поэтому линия находится не там, где должно быть фактическое среднее значение. У кого-нибудь есть идеи? Можно ли изменить способ, которым Seaborn рассчитывает центральную линию? (например, в медиану)

1 Ответ

1 голос
/ 30 января 2020

Вы можете использовать ключевое слово estimator seaborn.lineplot. В документации вы найдете относительно этого:

Оценщик: имя pandas метода или вызываемого или None, необязательно

Метод агрегирования по нескольким наблюдениям переменной y на одном уровне x. Если None, будут выведены все наблюдения.

Значение по умолчанию для estimator равно mean, что объясняет ваше наблюдение, описанное в вопросе. Таким образом, вы можете определить функцию lambda, выбирающую всегда первое значение из трех одинаковых значений year.

lambda x: x[0]

Использование

import seaborn as sns
sns.lineplot(x='year', y='area', data=df, estimator=lambda x: x[0], marker='o')

дает желаемый график.

enter image description here

Если вы хотите вместо median, import numpy as np и использовать estimator=np.median.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...