Skip to content

how can I embed my mplfinance graph(mpf_animation_demo1.py) in Tkinter ? #308

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
hmhjapan opened this issue Jan 2, 2021 · 2 comments
Open
Labels
question Further information is requested

Comments

@hmhjapan
Copy link

hmhjapan commented Jan 2, 2021

Ask anything you want about mplfinance usage, project philosophy and/or priorities, or anything else related to mplfinance.
Display the following animation graph on the tkinter,environment:python3.6 +windows10 desktop
Below is mpf_animation_demo1.py:

import pandas as pd
import mplfinance as mpf
import matplotlib.animation as animation

idf = pd.read_csv('data/SPY_20110701_20120630_Bollinger.csv',index_col=0,parse_dates=True)
idf.shape
idf.head(3)
idf.tail(3)
df = idf.loc['2011-07-01':'2011-12-30',:]

fig = mpf.figure(style='charles',figsize=(7,8))
ax1 = fig.add_subplot(2,1,1)
ax2 = fig.add_subplot(3,1,3)

def animate(ival):
    if (20+ival) > len(df):
        print('no more data to plot')
        ani.event_source.interval *= 3
        if ani.event_source.interval > 12000:
            exit()
        return
    data = df.iloc[0:(20+ival)]
    ax1.clear()
    ax2.clear()
    mpf.plot(data,ax=ax1,volume=ax2,type='candle')

ani = animation.FuncAnimation(fig, animate, interval=250)

mpf.show()
@hmhjapan hmhjapan added the question Further information is requested label Jan 2, 2021
@hmhjapan
Copy link
Author

hmhjapan commented Jan 2, 2021

import tkinter
from matplotlib.backends.backend_tkagg import (
    FigureCanvasTkAgg, NavigationToolbar2Tk)
from matplotlib.backend_bases import key_press_handler
from matplotlib.figure import Figure

import numpy as np

root = tkinter.Tk()
root.wm_title("Embedding in Tk")
fig = Figure(figsize=(5, 4), dpi=100)

t = np.arange(0, 3, .01)

years =[1950,1960,1970,1980,1990,2000,2010]
gdp=[300.2,543.3,1075.9,2862.5,5979.6,10289.7,14958.3]
fig.add_subplot(111).plot(years,gdp,color='red',marker='o')

canvas = FigureCanvasTkAgg(fig, master=root)  # A tk.DrawingArea.
canvas.draw()
canvas.get_tk_widget().pack(side=tkinter.TOP, fill=tkinter.BOTH, expand=1)

toolbar = NavigationToolbar2Tk(canvas, root)
toolbar.update()
canvas.get_tk_widget().pack(side=tkinter.TOP, fill=tkinter.BOTH, expand=1)


def on_key_press(event):
    print("you pressed {}".format(event.key))
    key_press_handler(event, canvas, toolbar)


canvas.mpl_connect("key_press_event", on_key_press)


def _quit():
    root.quit()
    root.destroy()

button = tkinter.Button(master=root, text="Quit", command=_quit)
button.pack(side=tkinter.BOTTOM)

tkinter.mainloop()

Above is the source code of tkinter ,How to take and assemble two source code files?
thank you!

@DanielGoldfarb
Copy link
Collaborator

I am sorry I am not much of an expert in TkInter. Have only played with it once or twice.

There is an example you can look at here: https://github.com/matplotlib/mplfinance/wiki/TkInter-Example

And some additional sample code here: #304

I would like to have a one or two good mplfinance tkinter demos to post here in the repository, but for me to do it myself I would probably have to spend a full couple of days learning tkinter and creating the demos, and I just don't have that time presently. Hopefully someone reading this who is well versed in tkinter will decide to help our and contribute an example or two to this repository.

Please let me know if the above links help out. All the best. --Daniel

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants