簡體   English   中英

在 Plotly 散點圖上添加趨勢線

[英]Adding Trendline on Plotly Scatterplot

我有三個不同的數據列。 列已被轉換以簡化問題。

size = [0.25, 0.5, 1.0, 2.0, 0.25, 0.5, 1.0, 2.0, 0.25, 0.5, 1.0, 2.0]
time = [228.64, 28.8, 3.88, 0.47, 439.72,54.2, 6.65, 0.77, 808.67, 103.53, 12.3, 1.79]
error = [0.0, 0.53, 0.28, 2.03, 0.0, 0.09, 0.29, 2.22, 0.0, 0.04, 0.35, 0.11]

我正在嘗試使用分散 plot 對它們進行 plot。 X 軸將包含大小,Y 軸將包含時間和誤差。

import plotly.graph_objects as go
from plotly.subplots import make_subplots


fig = make_subplots(specs=[[{"secondary_y": True}]])
fig.add_trace(
    go.Scatter(x=size, y=time, name="Time", mode = "markers", marker_symbol=3, marker_size = 10, marker_color = "red"),
    secondary_y=False)


fig.add_trace(
    go.Scatter(x=size, y=error, mode = "markers",name="Error", marker_symbol=14,marker_size = 10, marker_color = "black")), 
    secondary_y=True)

fig.show()

我想添加趨勢線:

  • 大小與時間的指數/對數趨勢線
  • 大小與誤差的線性趨勢線

    是否有內置的 function 這樣做?

    我得到以下圖表:

    在此處輸入圖像描述

  • 我認為 Plotly Express 內置了對一些趨勢線的支持: https://plotly.com/python/linear-fits/

    但不是“普通”Plotly。 但是手動添加它們並不難。 請參閱我添加的幾行來計算擬合值

    size = [0.25, 0.5, 1.0, 2.0, 0.25, 0.5, 1.0, 2.0, 0.25, 0.5, 1.0, 2.0]
    time = [228.64, 28.8, 3.88, 0.47, 439.72,54.2, 6.65, 0.77, 808.67, 103.53, 12.3, 1.79]
    error = [0.0, 0.53, 0.28, 2.03, 0.0, 0.09, 0.29, 2.22, 0.0, 0.04, 0.35, 0.11]
    
    import numpy as np
    from sklearn.linear_model import LinearRegression
    
    err_size_regr = LinearRegression()
    err_size_res = err_size_regr.fit(np.array(size).reshape(-1,1), np.array(error))
    err_fit = err_size_regr.predict(np.array(size).reshape(-1,1))
    
    time_size_regr = LinearRegression()
    time_size_res = err_size_regr.fit(np.array(size).reshape(-1,1), np.log(np.array(time)))
    time_fit = np.exp(time_size_res.predict(np.array(size).reshape(-1,1)))
    
    
    import plotly.graph_objects as go
    from plotly.subplots import make_subplots
    
    
    fig = make_subplots(specs=[[{"secondary_y": True}]])
    fig.add_trace(
        go.Scatter(x=size, y=time, name="Time", mode = "markers", marker_symbol=3, marker_color = "red"),
        secondary_y=False)
    
    fig.add_trace(
        go.Scatter(x=size, y=time_fit, mode = "markers",name="Time fit", marker_symbol=3, marker_color = "blueviolet"), 
        secondary_y=False)
    
    fig.add_trace(
        go.Scatter(x=size, y=error, mode = "markers",name="Error", marker_symbol=14,marker_color = "green"), 
        secondary_y=True)
    
    fig.add_trace(
        go.Scatter(x=size, y=err_fit, mode = "lines",name="Error fit", marker_color = "lightgreen"), 
        secondary_y=True)
    
    fig.show()
    
    

    output(對不起,我更改了您的顏色以更好地查看結果)

    情節配合

    暫無
    暫無

    聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

     
    粵ICP備18138465號  © 2020-2024 STACKOOM.COM