介绍:
您提供的数据样本是一个图像,并且不是很容易使用,所以我将使用一些采样的随机时间序列来提供建议。顺便说一句,您的数据样本中的变量与您使用的变量不匹配px.Scatter
。
我正在使用 plotly 版本'4.2.0'
,无法重现您的问题。希望无论如何你会发现这个建议很有用。
使用这样结构的数据...
Timestamp Position_type value
145 2020-02-15 value3 86.418593
146 2020-02-16 value3 78.285128
147 2020-02-17 value3 79.665202
148 2020-02-18 value3 84.502445
149 2020-02-19 value3 91.287312
...我能够制作这个情节...
...使用此代码:
# imports
from plotly.subplots import make_subplots
import plotly.graph_objs as go
import pandas as pd
import numpy as np
# data
np.random.seed(123)
frame_rows = 50
n_plots = 2
frame_columns = ['V_'+str(e) for e in list(range(n_plots+1))]
df = pd.DataFrame(np.random.uniform(-10,10,size=(frame_rows, len(frame_columns))),
index=pd.date_range('1/1/2020', periods=frame_rows),
columns=frame_columns)
df=df.cumsum()+100
df.iloc[0]=100
df.reset_index(inplace=True)
df.columns=['Timestamp','value1', 'value2', 'value3' ]
varNames=df.columns[1:]
# melt dataframe with timeseries from wide to long format.
# YOUR dataset seems to be organized in a long format since
# you're able to set color using a variable name
df_long = pd.melt(df, id_vars=['Timestamp'], value_vars=varNames, var_name='Position_type', value_name='value')
#df_long.tail()
# plotly time
import plotly.io as pio
import plotly.express as px
#pio.renderers = 'jupyterlab'
fig = px.scatter(data_frame=df_long, x='Timestamp', y='value', color='Position_type')
#fig = px.line(data_frame=df_long, x='Timestamp', y='value', color='Position_type')
fig.show()
如果你改变...
px.scatter(data_frame=df_long, x='Timestamp', y='value', color='Position_type')
...至...
fig = px.line(data_frame=df_long, x='Timestamp', y='value', color='Position_type')
...你会得到这个情节:
肉眼所见没有趋势线。
编辑 - 我想我知道发生了什么......
仔细看了你的图,我意识到这些线不是趋势线。趋势线通常不会从系列的初始值开始,并以系列的最后一个值结束。这就是所有三个系列都发生的事情。所以我认为你在某处有一些错误或重复的时间戳。