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

使用mplfinance绘制动态更新K线图遇阻,求旧图更新方法

解决mplfinance动态更新K线图重复生成新图表的问题

默认调用fplt.plot()时,每次都会创建新的Figure对象,导致数据更新时弹出新窗口。要实现动态更新,核心是复用同一个绘图容器(Figure和Axes),具体操作如下:

初始化绘图容器

先创建一次Figure和Axes对象,后续更新时复用:

import mplfinance as fplt
import pandas as pd
import matplotlib.pyplot as plt

# 仅初始化一次绘图容器
fig, ax = plt.subplots()

# 初始数据构建(替换为你的实际初始数据)
date_list = []  # 时间序列数据
open_price = []
high_price = []
low_price = []
close_price = []

df = pd.DataFrame(
    {'Open': open_price, 'High': high_price, 'Low': low_price, 'Close': close_price},
    index=date_list
)

# 首次绘图,指定使用已创建的ax
fplt.plot(df, type='candle', title='EUR_USD', ylabel='Price ($)', ax=ax)

动态更新数据与图表

当数据更新后,执行以下代码复用已有Axes,清除旧内容并绘制新图:

# 替换为你的最新数据
new_date_list = []
new_open = []
new_high = []
new_low = []
new_close = []

# 构建更新后的DataFrame
df_updated = pd.DataFrame(
    {'Open': new_open, 'High': new_high, 'Low': new_low, 'Close': new_close},
    index=new_date_list
)

# 关键:指定ax并设置clear=True清除旧内容
fplt.plot(df_updated, type='candle', title='EUR_USD', ylabel='Price ($)', ax=ax, clear=True)

# 触发图表刷新
plt.pause(0.01)  # 短暂暂停确保界面刷新,时间可按需调整

注意事项

  • 不要在每次更新时重复创建fig, ax,只需要初始化一次。
  • 如果是循环持续更新数据,将更新代码放入循环内即可,每次更新后调用plt.pause()或fig.canvas.draw()刷新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:10:20