如何使用散点图显示间隙

Posted

技术标签:

【中文标题】如何使用散点图显示间隙【英文标题】:How to show gaps with plotly scatter graphs 【发布时间】:2021-07-03 13:46:32 【问题描述】:

我有两个熊猫系列:

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 之间的系列 x 中添加一个 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]

谢谢

【问题讨论】:

【参考方案1】:

我怀疑这就是你的目标:

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

【讨论】:

是的,这就是我想要的图形,但我不想分隔线,因为原则上我不知道gap是否等于12,我可以让y系列等于[1.0 , 2.1, 3.3, 2.1, 2.3] @Andrea 我想你会为差距以某种方式定义一个阈值。您如何期望 plotly 知道 not 在轨迹中仅 一些 点之间画一条线? 你是对的,因为这个原因,我做了一个函数,如果两个连续值之间的差异大于定义的三分之二,则归一化跟踪放置一个 None 值。感谢您的澄清 @Andrea 好!如果我的建议没有用,请考虑留下赞成票和/或将其标记为已接受的答案。 @Andrea 感谢您接受我的回答!

以上是关于如何使用散点图显示间隙的主要内容,如果未能解决你的问题,请参考以下文章

如何修改 2d 散点图以显示基于 csv 文件中第三个数组的颜色?

请问excel中如何将散点图拟合成公式呀?

如何在 Python 中用空圆圈绘制散点图?

如何修改散点图图例以显示相同类型句柄的不同格式?

Excel中如何正确地画XY散点图

如何使用python绘制散点图?