как сменить легенду художника с точки на линию в регплоте? - PullRequest
0 голосов
/ 03 мая 2020

У меня есть регплот с линиями регрессии. Когда я добавляю легенду, метка легенды является точкой. Как изменить точку на линию?

ax = sns.regplot(x='chronolgical age', y = i_feature,
                data = plot_datai[plot_datai['Sex']==-1], fit_reg=True, 
                scatter_kws={'alpha':0.8, 's':2}, line_kws={'alpha':0.8, 'linewidth':2},
                color = sex_color[0], label = 'Female',
                x_jitter = .2, order = 2)

ax = sns.regplot(x='chronolgical age', y = i_feature,
                 data = plot_datai[plot_datai['Sex']==1], fit_reg=True, 
                 scatter_kws={'alpha':0.8, 's':2}, line_kws={'alpha':0.8, 'linewidth':2},
                 color = sex_color[1], label = 'Male',
                 x_jitter = .2, order = 2)

ax.legend(loc = 'lower left', borderpad=.2)

1 Ответ

1 голос
/ 03 мая 2020

Вместо добавления label к regplot (который, по-видимому, рассматривает график рассеяния в качестве основного компонента), label можно установить на линейный график с помощью line_kws.

* 1006. * Вот пример кода с использованием набора данных «tips» вместе с опциями, используемыми в вопросе:
import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset("tips")
ax = sns.regplot(x="total_bill", y="tip", data=tips[tips["sex"] == "Female"],
                 fit_reg=True,
                 scatter_kws={'alpha': 0.8, 's': 2},
                 line_kws={'alpha': 0.8, 'linewidth': 2, 'label': 'Female'},
                 color='crimson',  # label='Female',
                 x_jitter=.2, order=2)
ax = sns.regplot(x="total_bill", y="tip", data=tips[tips["sex"] == "Male"],
                 fit_reg=True,
                 scatter_kws={'alpha': 0.8, 's': 2},
                 line_kws={'alpha': 0.8, 'linewidth': 2, 'label': 'Male'},
                 color='dodgerblue',  # label='Male',
                 x_jitter=.2, order=2)
ax.legend(loc='upper left', borderpad=.2)
plt.show()

demo plot

...