Невозможно изменить стиль линии в Seaborn.FacetGrid - PullRequest
0 голосов
/ 06 января 2019

Я пытаюсь создать FacetGrid с полными пунктирными линиями, такими как в этом комментарии . На основании кода в комментарии и FacetGrid doc это должно работать, однако я получаю только полные строки, без черточек.

Может ли кто-нибудь помочь мне?

Мин. рабочий пример:

import matplotlib
import pandas as pd
import seaborn as sns

# toy data
x = [i for i in range(10)]*3
y = [0.5*i for i in range(10)]
y.extend([0.7*i for i in range(10)])
y.extend([0.3*i for i in range(10)])
mode = ["A" for i in range(10)]
mode.extend(["B" for i in range(10)])
mode.extend(["C" for i in range(10)])
method = ["X" for i in range(5)]
method.extend(["Y" for i in range(5)])
method = method*3
df = pd.DataFrame({'x' : x, 'y' : y, 'mode' : mode, 'method' : method})

sns.set_context("paper")
sns.set(style="whitegrid")
blue = matplotlib.colors.hex2color('#5862f4')
pink = matplotlib.colors.hex2color('#e059c3')


kw = {'color': [pink, pink, blue], 'linestyle' : ["-","--","-"]}
p = sns.FacetGrid(df, col='method', hue='mode', sharey='row', margin_titles=True, hue_kws=kw)
p.map(sns.lineplot, 'x', 'y')
p.axes[0,0].set_xlim(0,10)
p.add_legend()

plt.savefig("test.png", bbox_inches='tight')

Result

1 Ответ

0 голосов
/ 06 января 2019

Seaborn lineplot перезаписывает стиль линии, чтобы использовать его с параметром style. Здесь, кажется, вы не хотите использовать style. Но также, кажется, нет никакой причины использовать lineplot вообще. Следовательно, нормальный plt.plot() будет работать нормально.

kw = {'color': [pink, pink, blue], 'linestyle' : ["-","--","-"]}
g = sns.FacetGrid(df, col='method', hue='mode', sharey='row', margin_titles=True, hue_kws=kw)
g.map(plt.plot, 'x', 'y')

enter image description here

Для полноты, вот как можно использовать аргумент style для lineplot с FacetGrid.

g = sns.FacetGrid(df, col='method', sharey='row', margin_titles=True)
g.map_dataframe(sns.lineplot, 'x', 'y', style="mode", style_order=list("ABC"))

enter image description here

Обратите внимание, что для обеспечения согласованного отображения элементов столбца "mode" на стили необходимо установить порядок стилей.

...