You need to enable JavaScript to run this app. 使用FigureCanvasTkAgg绘图时mplfinance自定义颜色、网格样式失效问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

使用FigureCanvasTkAgg绘图时mplfinance自定义颜色、网格样式失效问题咨询

问题原因

你给mplfinance传入自行创建的axes对象时,它不会将自定义样式里的画布背景、坐标轴配色、网格样式等全局配置应用到已存在的axes上,仅会处理K线、成交量等图形元素的配色,因此看起来样式没有生效。

解决方案

不要自行创建Figure和axes对象,而是让mplfinance在绘图时生成带完整样式的Figure对象,再将该对象绑定到Tkinter画布上即可,修改后可运行代码如下:

from tkinter import *
import datetime as dt
import yfinance as yf
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import (FigureCanvasTkAgg, NavigationToolbar2Tk)
import mplfinance as mpf

gui = Tk()
gui.geometry("800x700")
stock = 'SPY'
end = dt.datetime.now()
start = end - dt.timedelta(days=6)
df = yf.download(stock.upper(), start, end, interval = '5m')

def Plot_data(type='candle', grid= '-', style='nightclouds'):
    # 创建自定义样式
    s = mpf.make_mpf_style(base_mpf_style=style, gridstyle=grid)
    # 调用mpf.plot时添加returnfig=True参数,获取带完整样式的fig对象
    fig, axlist = mpf.plot(df, type = type, style = s, figsize=(7,5), dpi=100, returnfig=True)
    # 用返回的fig创建Tkinter画布
    chart_canvas = FigureCanvasTkAgg(fig, master=gui)
    chart_canvas.get_tk_widget().place(relx = .05, rely=.25)

Plot_data()
mainloop()

运行上述代码即可在Tkinter窗口中看到和独立运行时完全一致的自定义样式效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 21:51:01