У меня трудности с наложением (наложением) двух фактор-участков с использованием библиотеки seaborn.
Общая проблема заключается в том, что я хотел бы изобразить тонкими серыми линиями все (фоновые данные), а затем сверху разноцветными, более толстыми линиями данные, которые мы хотим выделить. С одной стороны, мне не удается объединить два набора данных на графике с FacetGrid
, а во-вторых, у меня проблема с использованием zorder
.
Я сделал фиктивный пример с набором данных exercise
:
sns.set_style('whitegrid')
exercise = sns.load_dataset("exercise")
background = exercise.assign(idkind = lambda df: df['id'].astype(str)+df.kind.astype(str))
foreground = exercise.groupby(['kind','time']).mean().reset_index().rename(columns={'id':'idkind'})
Пока я пытался:
factorplot
+ factorplot
Построение двух factorplot
с, как если бы оно было sns.pointplot
дважды аналогично в этом примере . Мне нужно sns.factorplot
из-за экспериментальной установки данных. Это не работает, так как создаются просто два независимых графика. Я бы в основном хотел, чтобы нижний график находился поверх верхнего.
g=sns.factorplot(x="time", y="pulse", hue='idkind', col='kind', legend=False,color='lightgrey',data=background)
sns.factorplot(x="time", y="pulse", hue="kind", data=foreground)
factorplot
+ gmap.(factorplot)
Таким образом, я попытался использовать sns.factorplot
, который, я думаю, выдает FacetGrid
и g.map
в секунду sns.factorplot
сверху, используя новый набор данных с точно таким же дизайном и категориями. В результате вместо использования одних и тех же подзаговоров создается ряд строк с повторным графиком.
g=sns.factorplot(x="time", y="pulse", hue='idkind', col='kind', legend=False,color='lightgrey',data=background)
g.map(sns.factorplot, x="time", y="pulse",hue='idkind', col='kind', data=foreground)
factorplot
+ g.map(pointplot)
g.map
точечный график, который помещает весь набор данных во все вспомогательные участки, не учитывая дизайн FacetGrid
.
g=sns.factorplot(x="time", y="pulse", hue='idkind', col='kind', legend=False,color='lightgrey',data=background)
g.map(sns.pointplot,x="time", y="pulse", hue='idkind', col='kind', data=foreground,zorder='1000')