Pyplot和Seaborn - 如何通过seaborn情节

时间:2016-04-28 14:21:08

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

0 个答案:

没有答案