You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Plotly处理时间戳索引Series数据,消除股票走势休市长平直线

股票分时走势休市平直线问题解决方案

你遇到的休市时段长平直线问题,本质是Plotly默认将时间轴识别为连续线性轴,无交易的休市、夜间、周末时段也会被计入轴宽,导致跨无数据区间的连线被拉长。不需要手动拆分转换数据数组,用Plotly原生的轴配置就能完美适配你拿到的带时区Timestamp索引的Series数据。

首先修正你原有代码的笔误:原代码中.CLose是大小写错误,正确属性名为.Close,否则会触发属性不存在的报错。


方案1:使用rangebreaks跳过无交易时段(更推荐,保留时间轴原生特性)

该方案不需要修改原始数据,直接通过x轴配置自动过滤掉非交易时段,x轴依然保持时间类型,交互体验更自然:

import yfinance as yf
import plotly.express as px

# 拉取5天分钟级收盘价数据
data = yf.download(tickers='SOF.BR', period="5d" , interval="1m").Close

# 直接绘图,直接传入Series的索引和值即可,不需要转换格式
fig = px.line(x=data.index, y=data.values)

# 核心配置:跳过非交易时段
fig.update_xaxes(
    # 跳过每日收盘到次日开盘的时段(对应布鲁塞尔交易所17:30收盘到次日09:00开盘)
    rangebreaks=[
        dict(bounds=[17.5, 9], pattern="hour"),
        # 跳过周六周日的非交易日
        dict(bounds=["sat", "mon"])
    ],
    # 可选:调整x轴标签格式,兼容带时区的时间
    tickformat="%m-%d %H:%M"
)

fig.update_layout(
    title="SOF.BR 过去5天分钟级收盘价走势",
    xaxis_title="时间",
    yaxis_title="收盘价(欧元)"
)

fig.show()

方案2:将x轴设为类别类型(适合不需要时间轴连续逻辑的场景)

如果你不需要保留时间轴的连续线性特性,也可以直接把x轴设为类别类型,Plotly只会展示有实际数据的时间点,自动跳过所有无数据的间隙:

import yfinance as yf
import plotly.graph_objects as go

data = yf.download(tickers='SOF.BR', period="5d" , interval="1m").Close

fig = go.Figure(data=[go.Scatter(
    x=data.index,
    y=data.values,
    mode="lines"
)])

fig.update_xaxes(
    type="category",
    # 可选:调整标签显示密度,避免标签重叠,这里设置每60个数据点(1小时)显示一个标签
    tickvals=data.index[::60],
    ticktext=[x.strftime("%m-%d %H:%M") for x in data.index[::60]]
)

fig.show()

注意事项

  • 你拿到的带时区的Timestamp类型索引不需要做任何格式转换,Plotly原生兼容pandas的DateTimeIndex类型,直接传入即可正常识别
  • 如果使用其他交易所的股票数据,只需要对应调整rangebreaks的hour bounds值为对应交易所的休市时段即可
  • 不需要手动拆分数据为多组数组跳过休市时段,上述轴配置方案代码量更少,也不会破坏原始数据的完整性

内容的提问来源于stack exchange,提问作者Fondue meh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 18:24:04