使用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
相关产品推荐
相关产品推荐

