如何用 plotly 散点图显示间隙

How to show gaps with plotly scatter graphs

我有两个pandas系列:

x=[59281.021432, 59281.063095, 59281.104768, 59283.188094, 59283.313102]
x=pd.Series(x)
y=[1.0, 2.1, 3.3, 12.1, 12.3]
y=pd.Series(y)

大小相同。当我用 plotly 绘制图表时,我看不到差距:

fig = go.Figure(layout=go.Layout(xaxis_title='MJD [days]', yaxis_title='value'))
fig.add_trace(go.Scatter(x=x, y=y, type = 'scatter', mode = 'lines'))

我想看到的是同一张图,但有间隙没有线。可能吗?我看到我应该在 59281.104768 和 59283.188094 之间的 serie x 中放入一个 None 字符,但是怎么做呢?

我已经尝试使用此代码来获取下边界和上边界,但我不知道如何完成添加 None 值的系列:

delta = x[1] - x[0]
lowerBounds = (x+delta)[:-1]
upperBounds = (x-delta)[1:]
lowerBounds=lowerBounds.to_numpy()
upperBounds=upperBounds.to_numpy()
mask = lowerBounds<=upperBounds
upperBounds, lowerBounds = upperBounds[mask], lowerBounds[mask]

谢谢

我怀疑这就是你的目的:

如果是这样,那么我会在数据框中组织您的系列,根据定义的 gap 对数据框进行子集化,然后对每个子集使用 add_trace

完整代码:

import plotly.graph_objects as go
import pandas as pd
x=[59281.021432, 59281.063095, 59281.104768, 59283.188094, 59283.313102]
x=pd.Series(x)
y=[1.0, 2.1, 3.3, 12.1, 12.3]
y=pd.Series(y)

df = pd.DataFrame({'x':x,
                   'y':y})

gap = 12

fig = go.Figure(layout=go.Layout(xaxis_title='MJD [days]', yaxis_title='value'))
# fig.add_trace(go.Scatter(x=x, y=y, type = 'scatter', mode = 'markers'))
fig.add_trace(go.Scatter(x=df[df['y']>gap]['x'],
                         y=df[df['y']>gap]['y'], mode = 'lines',
                         line=dict(color='blue')))

fig.add_trace(go.Scatter(x=df[df['y']<gap]['x'],
                         y=df[df['y']<gap]['y'], mode = 'lines',
                         line=dict(color='blue')))
fig.show()