如何使用绘图散点图显示间隙

2024-10-05 13:14:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个熊猫系列:

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'))

enter image description here

我想看到的是相同的图形,但是有间隙,没有直线。可能吗?我知道我应该在序列号59281.104768和59283.188094之间加一个无字符,但是怎么加呢

我已尝试使用此代码来获取下限和上限边界,但我不知道如何完成添加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]

多谢各位


Tags: tonumpy图形gotitlefig绘制mask
1条回答
网友
1楼 · 发布于 2024-10-05 13:14:18

我怀疑这就是你的目标:

enter image description here

如果是这种情况,那么我将在数据帧中组织您的系列,根据定义的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()

相关问题 更多 >

    热门问题