Pyplot and Seaborn - Как добавить маркеры к легенде, когда они были созданы сюжетом на морском
Я строю 5 наборов данных на одном графике. Для каждого набора данных мне нужно построить график рассеяния точек (который я делаю, используя seaborn.regplot
) и функция линии, которая была отдельно подогнана к точкам.
Проблема в том, что я могу добавить строки к легенде, но я не могу добавить маркеры из regplot, так как у меня нет никакого дескриптора объекта на нем. Вот мой код:
f, ax = plt.subplots()
#Plotting the scatter points onto the axes object ax
sns.regplot(x='logF', y='R', data=MeanParams[(0 < MeanParams.M) & (0.2 > MeanParams.M)],
fit_reg=False, color='g', marker='+', ax=ax)
sns.regplot(x='logF', y='R', data=MeanParams[(0.2 < MeanParams.M) & (0.5 > MeanParams.M)],
fit_reg=False, color='y', marker='x', ax=ax)
sns.regplot(x='logF', y='R', data=MeanParams[(0.5 < MeanParams.M) & (1.5 > MeanParams.M)],
fit_reg=False, color='r', marker='x', ax=ax)
sns.regplot(x='logF', y='R', data=MeanParams[(1.5 < MeanParams.M) & (3.5 > MeanParams.M)],
fit_reg=False, color='b', marker='x', ax=ax)
sns.regplot(x='logF', y='R', data=MeanParams[(3.5 < MeanParams.M)],
fit_reg=False, color='k', marker='+', ax=ax)
#plotting the lines onto the same axes object
line1, = ax.plot(x, y_0, 'k-', linewidth=2)
line2, = ax.plot(x, y_1, 'k--', linewidth=2)
line3, = ax.plot(x, y_2, 'k-.', linewidth=3)
line4, = ax.plot(x, y_3, 'k:', linewidth=3)
line5, = ax.plot(x, y_4, 'r--', linewidth=2)
#creating the legend
ax.legend((line1,line2,line3,line4,line5),
(r'0.0 - 0.2', r'0.2 - 0.5', r'0.5 - 1.5', r'1.5 - 3.5', r'3.5 + '),
title='Mass Range', loc='upper left')
Как вы можете видеть, у меня есть дескрипторы на объектах линии, созданных ax.plot()
но так как я сделал разброс с seaborn.regplot()
У меня нет ручки на маркерах.
Одним из простых способов решения этой проблемы было бы просто использовать вместо этого разброс pyplot. Но я, наверное, просто из любопытства спрашиваю, есть ли способ вытащить объекты линии / маркера, чтобы я мог также поместить их в легенду?