Skip to content

TkInter Example

Daniel Goldfarb edited this page Sep 26, 2021 · 2 revisions

The following example code was take from the link in this comment: https://github.com/matplotlib/mplfinance/issues/46#issuecomment-596209866


import matplotlib as matplotlib
matplotlib.use("TkAgg")
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

import pandas as pd
import talib as talib
import mplfinance as mpf

import tkinter as tk

def drawChart(df):
    # Calculate Stochastic
    df["slowk"], df["slowd"] = talib.STOCH(df["High"], df["Low"], df["Close"], fastk_period=5, 
                                           slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0)

    # Calculate Bollinger Band
    df["upperband"], df["middleband"], df["lowerband"] = talib.BBANDS(df["Close"], timeperiod=5, 
                                                                      nbdevup=2, nbdevdn=2, matype=0)
    # Prune data to last 30 values
    df = df[-30:]

    # Place Stochastic in Lower Panel
    mpfStoch = mpf.make_addplot(df[["slowk", "slowd"]], panel="lower")

    # Place Upper and Lower Bollinger Band in Upper Panel
    mpfBB = mpf.make_addplot(df[["upperband", "lowerband"]])

    # List of added Plots
    addedPlots = [mpfStoch, mpfBB]

    # Generate the plots and and return the figure
    fig, _ = mpf.plot(df, type='candlestick', volume=True, returnfig=True, addplot=addedPlots, figscale=2.0)

    # Make a top level window
    top = tk.Toplevel()
    # Add a canvas containing the figure
    canvas = FigureCanvasTkAgg(fig, top)
    # Draw it
    canvas.draw()
    canvas.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True)