【问题标题】:How can I fit a regression line in a seaborn scatterplot of order 0 (constant)?如何在 0 阶(常数)的 seaborn 散点图中拟合回归线?
【发布时间】:2018-08-22 11:13:34
【问题描述】:

我有一个 seaborn 散点图,其中包含针对不同版本的不同组的度量。我想为每个组设置一条恒定线,以查看它们之间的表现如何。我尝试像这样使用 seaborn.lmplot:

 seaborn.lmplot(x="release", y=metric, palette="PRGn", hue=hue, data=data, order=0)

不幸的是,参数 order 的最小值似乎是 1,因此它适合 1 阶 (y = ax + b) 而不是 0 阶 (y = c) 的行。有没有一种简单的方法可以使用 seaborn 拟合一条恒定线?

【问题讨论】:

    标签: python regression seaborn scatter-plot


    【解决方案1】:

    您可以获取lmplot 正在绘制的轴,然后使用axhline 绘制一条水平线。使用 sns.color_palette() 获取 seaborn 将使用的颜色列表,然后在 axhline 调用中使用相同的颜色:

    import matplotlib.pyplot as plt
    import seaborn as sns
    
    tips = sns.load_dataset("tips")
    g = sns.lmplot(x="total_bill", y="tip", hue="smoker", data=tips, markers=["o", "x"])
    
    current_palette = sns.color_palette()  # get colors that seaborn uses
    
    ax = g.axes[0][0]
    
    # draw horizontal lines making sure they are the same color as seaborn uses
    for i in range(len(ax.lines)):
        ax.axhline(i + 3, c=current_palette[i])
    
    plt.show()
    

    从 cmets 来看,最终的解决方案是把上面的例子改成如下:

    g = sns.lmplot(x="release", y=variable, hue=hue, data=data, fit_reg=False)
    
    current_palette = sns.color_palette()
    
    medians = data.groupby([hue]).median()[variable].tolist()
    
    for i in range(len(medians)):
        g.ax.axhline(medians[i], c=current_palette[i])
    

    【讨论】:

    • 感谢您的快速回答,但是,我有很多组,我想保持相同的调色板,所以我知道哪条线对应于哪些点,基于参数调色板和色调。
    • @kabinja 好的,我想我明白了。我已经更新了我的答案。看看有没有帮助?
    • 我用了你的想法,终于实现了我想要的。基本上我使用了下面的代码: sns.set_palette("PRGn") g = sns.lmplot(x="release", y=variable, hue=hue, data=data, fit_reg=False) current_palette = sns.color_palette()中位数 = data.groupby([hue]).median()[variable].tolist() for i in range(len(medians)): g.ax.axhline(medians[i], c=current_palette[i])如果你编辑你的答案,让它做我想做的事,我可以接受它:)
    • @kabinja 我已将解决方案放入我的答案中。我认为你写自己的答案(如果你愿意的话)已经足够不同了,我将删除我刚刚所做的编辑。但这取决于你
    • 不用担心您完成了所有繁重的工作,再次感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多