import matplotlib
import matplotlib.datesasmdates
import pandasaspdfrommatplotlib.figure import Figurefrommatplotlib.finance import candlestick_ohlcfrommatplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAggfrommatplotlib.backend_bases import key_press_handlerfromnumpy import arange, sin, pi
matplotlib.use(‘TkAgg‘)
import sysif sys.version_info[0] < 3:
import TkinterasTkelse:
import tkinterasTk
root=Tk.Tk()
root.wm_title("CNY exchange rate")
root.iconbitmap(‘my_logo.ico‘)
# read data
data= pd.read_csv("data.csv", index_col=0, parse_dates=True)
data=data.reset_index()
data[‘Date2‘] = data[‘Date‘].apply(lambda d: mdates.date2num(d.to_pydatetime()))
tuples= [tuple(x) for x in data[[‘Date2‘,‘Open‘,‘High‘,‘Low‘,‘Close‘]].values]
# drawArea setup
drawArea= Figure(figsize=(10, 5), dpi=100)
ax= drawArea.add_axes([0.1, 0.2, 0.85, 0.7])
ax.spines[‘right‘].set_color(‘none‘)
ax.spines[‘top‘].set_color(‘none‘)
ax.xaxis.set_ticks_position(‘bottom‘)
ax.yaxis.set_ticks_position(‘left‘)
ax.tick_params(axis=‘both‘,
direction=‘out‘,
width=2,
length=8,
labelsize=12,
pad=8)
ax.spines[‘left‘].set_linewidth(2)
ax.spines[‘bottom‘].set_linewidth(2)
ax.set_xticklabels(data[‘Date2‘], rotation=45, horizontalalignment=‘right‘)
ax.xaxis_date()
ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m-%d"))
ax.set_ylabel(‘Price ($)‘, size=17)
candlestick_ohlc(ax, tuples, width=.5, colorup=‘r‘, colordown=‘g‘);
# a tk.canvas
canvas= FigureCanvasTkAgg( drawArea, master=root)
canvas.show()
canvas.get_tk_widget().grid(row=1, columnspan=4)
toolbar=NavigationToolbar2TkAgg(canvas, root)
toolbar.update()
toolbar.grid(row=2, columnspan=4)
#canvas._tkcanvas.pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
def _refresh():
ax.clear()
data= pd.read_csv("data2.csv", index_col=0, parse_dates=True)
data=data.reset_index()
data[‘Date2‘] = data[‘Date‘].apply(lambda d: mdates.date2num(d.to_pydatetime()))
tuples= [tuple(x) for x in data[[‘Date2‘,‘Open‘,‘High‘,‘Low‘,‘Close‘]].values]
ax.spines[‘right‘].set_color(‘none‘)
ax.spines[‘top‘].set_color(‘none‘)
ax.xaxis.set_ticks_position(‘bottom‘)
ax.yaxis.set_ticks_position(‘left‘)
ax.tick_params(axis=‘both‘,
direction=‘out‘,
width=2,
length=8,
labelsize=12,
pad=8)
ax.spines[‘left‘].set_linewidth(2)
ax.spines[‘bottom‘].set_linewidth(2)
ax.set_xticklabels(data[‘Date2‘], rotation=45, horizontalalignment=‘right‘)
ax.xaxis_date()
ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m-%d"))
ax.set_ylabel(‘Price ($)‘, size=17)
candlestick_ohlc(ax, tuples, width=.5, colorup=‘r‘, colordown=‘g‘);
canvas.show()
Tk.Label(root,text=‘Money‘).grid(row=0,column=0)
defaultVar=Tk.StringVar(root)
defaultVar.set("CNY") # defaultvalue
moneyList= Tk.OptionMenu(root, defaultVar, "CNY", "USD", "EUR")
moneyList.grid(row=0, column=1)
btnRefresh= Tk.Button(master=root, text=‘Refresh‘, command=_refresh)
btnRefresh.grid(row=0, column=3)
Tk.mainloop()