[英]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()
我想添加趨勢線:
我認為 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.