我正在将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 scatter来代替。但我想我只是出于好奇,有没有办法拉出线/标记对象,以便我可以将它们放入图例中?