You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置Plotly的OLS趋势线使其经过特定值(如原点)?

Plotly Express OLS趋势线强制过原点的实现方法

Plotly Express内置的OLS趋势线默认自带截距项,你可以通过以下两种简便方法实现过原点的拟合需求:

  • 方案1:高版本Plotly直接用内置参数(推荐)
    Plotly 4.10及以上版本支持通过trendline_options直接控制拟合逻辑,只要设置add_constant=False即可取消截距项,强制趋势线经过原点,示例代码如下:
    import plotly.express as px
    import pandas as pd
    
    # 替换为你的实际数据
    df = pd.DataFrame({
        "x": [1, 2, 3, 4, 5],
        "y": [1.9, 4.1, 5.8, 7.9, 10.2]
    })
    
    fig = px.scatter(
        df, x="x", y="y",
        trendline="ols",
        trendline_options={"add_constant": False}
    )
    fig.show()
    
    你可以通过px.get_trendline_results(fig)查看拟合报告,确认截距项为0,验证设置生效。
  • 方案2:旧版本Plotly手动拟合补线
    如果你使用的Plotly版本不支持trendline_options,可以手动计算无截距的OLS拟合值,再将趋势线添加到原图,示例代码如下:
    import plotly.express as px
    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame({
        "x": [1, 2, 3, 4, 5],
        "y": [1.9, 4.1, 5.8, 7.9, 10.2]
    })
    
    # 计算无截距OLS系数
    beta = np.sum(df["x"] * df["y"]) / np.sum(df["x"] ** 2)
    df["trendline"] = df["x"] * beta
    
    # 叠加散点和趋势线
    fig = px.scatter(df, x="x", y="y")
    fig.add_traces(px.line(df, x="x", y="trendline", color_discrete_sequence=["red"]).data)
    fig.show()
    

内容的提问来源于stack exchange,提问作者Joshua Schaafsma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 02:36:03