python 下 tinker、matplotlib 混合编程示例一个
2016-09-20 09:19
344 查看
该例是实现了 Tinker 嵌入 matplotlib 所绘制的蜡烛图(k 线),数据是从 csv 读入的。花一下午做的,还很粗糙,仅供参考。python 代码如下:
可以用来调试的数据一例,命名为 data.csv,与上面文件同目录即可:
import matplotlib import matplotlib.dates as mdates import pandas as pd from matplotlib.figure import Figure from matplotlib.finance import candlestick_ohlc from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg from matplotlib.backend_bases import key_press_handler from numpy import arange, sin, pi matplotlib.use('TkAgg') import sys if sys.version_info[0] < 3: import Tkinter as Tk else: import tkinter as Tk 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") # default value 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()
可以用来调试的数据一例,命名为 data.csv,与上面文件同目录即可:
Date,Open,High,Low,Close 2010-01-04,30.49,30.64,30.34,30.57 2010-02-04,30.50,31.64,20.34,25.57 2010-03-04,30.49,30.64,30.34,30.57 2010-04-04,30.49,30.64,30.34,30.57 2010-05-04,30.49,30.64,30.34,30.57 2010-06-04,30.49,30.64,30.34,30.57 2010-07-04,30,30.64,30.34,30.57 2010-08-04,20.49,30.64,30.34,30.57 2010-09-04,10.49,30.64,30.34,30.57
相关文章推荐
- Python使用matplotlib绘图示例
- 【Python-matplotlib】subplot2grid()函数的简单示例
- Python使用matplotlib简单绘图示例
- python matplotlib 库的示例代码
- Python使用matplotlib和pandas实现的画图操作【经典示例】
- python matplotlib 注释文本箭头简单代码示例
- Python使用matplotlib填充图形指定区域代码示例
- Python使用matplotlib实现绘制自定义图形功能示例
- Python使用matplotlib绘制多个图形单独显示的方法示例
- python matplotlib简单示例
- 使用python中的Matplotlib绘图示例(续)
- Python——matplotlib基础绘图函数示例
- Python实现在tkinter中使用matplotlib绘制图形的方法示例
- Python Matplotlib画图示例
- 【Python_OpenCv】笔记2:Matplotlib和OpenCv在python中的混合编程
- python中Matplotlib实现绘制3D图的示例代码
- Python基于matplotlib绘制栈式直方图的方法示例
- Python使用matplotlib绘制余弦的散点图示例
- python中利用matplotlib.patches在一个坐标轴上添加画的图形
- Python数据可视化编程通过Matplotlib创建散点图代码示例