python - 用 FigureCanvasTkAgg 绘图会覆盖 mplfinance 自定义颜色和网格
问题描述
我需要帮助,我试图弄清楚为什么我在 mplfinance 中选择的样式在我将其绘制到 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'):
fig = plt.Figure(figsize=(7,5), dpi=100)
chart = fig.add_subplot(111)
chart_canvas = FigureCanvasTkAgg(fig, master=gui)
chart_canvas.get_tk_widget().place(relx = .05, rely=.25)
s = mpf.make_mpf_style(base_mpf_style=style, gridstyle=grid)
mpf.plot(df, ax= chart, type = type, style = s)
Plot_data()
mainloop()
#Plotting it without tkinter and without the lines "" fig = plt.Figure()/
#chart = fig.add_subplot(111)"" works just fine,
#this is the customization I want in the tkinter window. Thank you.
def Plot_data(type='candle', grid= '', style='nightclouds'):
s = mpf.make_mpf_style(base_mpf_style=style, gridstyle=grid)
mpf.plot(df, type = type, style = s)
Plot_data()```
解决方案
您在 mplfinance 中选择的样式不起作用,因为您在 mplfinance 外部创建了 Figure 对象。
而不是fig = plt.Figure(figsize=(7,5), dpi=100)
,尝试
def Plot_data(type='candle', grid= '-', style='nightclouds'):
s = mpf.make_mpf_style(base_mpf_style=style, gridstyle=grid)
fig = mpf.figure(figsize=(7,5), dpi=100, style=s)
然后,您可以从对 的调用中删除style=
kwarg mpf.plot()
。
推荐阅读
- python - 当以该格式作为输入时,从 MMDDYYYY 中提取月份、日期和年份。仅使用数学
- node.js - 多节点版本
- pytorch - 如何避免 pytorch 的内存开销以便在 _one_ GPU 上并行训练多个模型?
- c++ - 嵌套 IF 语句 C++ 语法
- splunk - Splunk 搜索以在仪表板中显示最重要的不合规控制
- visual-studio - 如何解决这个 Visual Studios 2015 错误?
- leaflet - Leaflet Cluster 多次显示相同的标记
- python - 如何随机化你的名字和姓氏的第一个字母
- variables - 使用变量作为 grep 函数的关键字
- javascript - JS 承诺。一些节点js和护照js。如何从 Promise { {} } 中获取内部结构?请求用户