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

如何禁用Matplotlib实时K线图表的位置自动重置,支持滚动缩放交互

实时K线交互失效问题解决方案

问题根源

  • 每次更新时执行ax.clear()会清空用户手动调整的缩放、平移等视图配置
  • mpf.plot()默认会根据全量数据自动调整坐标轴范围,覆盖用户自定义的视图参数
  • 原代码还存在类方法缩进错误、df.append()方法已被pandas弃用的兼容问题

修复步骤

  1. 绘图前保存当前坐标轴的可视范围,绘图完成后恢复该范围
  2. 调用mpf.plot()时添加update_xlim=False、update_ylim=False参数,禁止工具自动调整坐标轴
  3. 替换已废弃的df.append()为pd.concat(),修正类方法缩进问题

修复后的animate函数代码

def animate(ival):
    global df
    global rs
    nxt = rtapi.fetch_next()
    if nxt is None:
        print('no more data to plot')
        ani.event_source.interval *= 3
        if ani.event_source.interval > 12000:
            exit()
        return
    # 替换废弃的append方法
    df = pd.concat([df, nxt])
    rs = df.resample(resample_period).agg(resample_map).dropna()
    # 保存用户调整后的视图范围
    curr_xlim = ax.get_xlim()
    curr_ylim = ax.get_ylim()
    ax.clear()
    # 绘图时关闭自动调整坐标轴
    mpf.plot(rs, ax=ax, type='candle', update_xlim=False, update_ylim=False)
    # 恢复之前的视图范围
    ax.set_xlim(curr_xlim)
    ax.set_ylim(curr_ylim)

可选优化

如果需要在用户未手动调整视图时,保持自动滚动显示最新K线,可以新增一个全局标记位,检测到用户调整过视图后再锁定范围,未调整时自动适配最新数据范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:45:04