如何使用散点图显示间隙
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 感谢您接受我的回答!以上是关于如何使用散点图显示间隙的主要内容,如果未能解决你的问题,请参考以下文章