该例是实现了 Tinker 嵌入 matplotlib 所绘制的蜡烛图(k 线),数据是从 csv 读入的。花一下午做的,还很粗糙,仅供参考。python 代码如下:

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[] < :
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=, 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=(, ), dpi=)
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=,
length=,
labelsize=,
pad=)
ax.spines['left'].set_linewidth()
ax.spines['bottom'].set_linewidth() ax.set_xticklabels(data['Date2'], rotation=, horizontalalignment='right')
ax.xaxis_date()
ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m-%d")) ax.set_ylabel('Price ($)', size=)
candlestick_ohlc(ax, tuples, width=., colorup='r', colordown='g'); # a tk.canvas
canvas = FigureCanvasTkAgg( drawArea, master=root)
canvas.show()
canvas.get_tk_widget().grid(row=, columnspan=) toolbar = NavigationToolbar2TkAgg(canvas, root)
toolbar.update()
toolbar.grid(row=, columnspan=)
#canvas._tkcanvas.pack(side=Tk.TOP, fill=Tk.BOTH, expand=) def _refresh():
ax.clear() data = pd.read_csv("data2.csv", index_col=, 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=,
length=,
labelsize=,
pad=)
ax.spines['left'].set_linewidth()
ax.spines['bottom'].set_linewidth() ax.set_xticklabels(data['Date2'], rotation=, horizontalalignment='right')
ax.xaxis_date()
ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m-%d")) ax.set_ylabel('Price ($)', size=)
candlestick_ohlc(ax, tuples, width=., colorup='r', colordown='g'); canvas.show() Tk.Label(root,text='Money').grid(row=,column=) defaultVar = Tk.StringVar(root)
defaultVar.set("CNY") # default value
moneyList = Tk.OptionMenu(root, defaultVar, "CNY", "USD", "EUR")
moneyList.grid(row=, column=) btnRefresh = Tk.Button(master=root, text='Refresh', command=_refresh)
btnRefresh.grid(row=, column=) Tk.mainloop()

可以用来调试的数据一例,命名为 data.csv,与上面文件同目录即可:

Date,Open,High,Low,Close
--,30.49,30.64,30.34,30.57
--,30.50,31.64,20.34,25.57
--,30.49,30.64,30.34,30.57
--,30.49,30.64,30.34,30.57
--,30.49,30.64,30.34,30.57
--,30.49,30.64,30.34,30.57
--,,30.64,30.34,30.57
--,20.49,30.64,30.34,30.57
--,10.49,30.64,30.34,30.57

python 下 tinker、matplotlib 混合编程示例一个的更多相关文章

  1. 使用 ctypes 进行 Python 和 C 的混合编程

    Python 和 C 的混合编程工具有很多,这里介绍 Python 标准库自带的 ctypes 模块的使用方法. 初识 Python 的 ctypes 要使用 C 函数,需要先将 C 编译成动态链接库 ...

  2. python下的复杂网络编程包networkx的安装及使用

    由于py3.x与工具包的兼容问题,这里采用py2.7 1.python下的复杂网络编程包networkx的使用: http://blog.sina.com.cn/s/blog_720448d30101 ...

  3. Python和C++的混合编程(使用Boost编写Python的扩展包)

    想要享受更轻松愉悦的编程,脚本语言是首选.想要更敏捷高效,c++则高山仰止.所以我一直试图在各种通用或者专用的脚本语言中将c++的优势融入其中.原来贡献过一篇<c++和js的混合编程>也是 ...

  4. Fortran与C/C++混合编程示例

    以下例子均来自网络,只是稍作了编辑,方便今后查阅. 子目录 (一) Fortran调用C语言 (二) C语言调用Fortran (三) C++ 调用Fortran (四) Fortran 调用 C++ ...

  5. python下的复杂网络编程包networkx的使用(摘抄)

    原文:http://blog.sciencenet.cn/home.php?mod=space&uid=404069&do=blog&classid=141080&vi ...

  6. python下的MySQL数据库编程

    https://www.tutorialspoint.com/python/python_database_access.htm if you need to access an Oracle dat ...

  7. Matlab与.NET基于类型安全的接口混合编程入门

    原文:[原创]Matlab与.NET基于类型安全的接口混合编程入门 如果这些文章对你有用,有帮助,期待更多开源组件介绍,请不要吝啬手中的鼠标. [原创分享]Matlab.NET混编调用Figure窗体 ...

  8. CUDA+OpenGL混合编程

    CUDA+OpenGL混合编程示例: #include <stdio.h> #include <stdlib.h> #include "GL\glew.h" ...

  9. 用c/c++混合编程方式为ios/android实现一个自绘日期选择控件(一)

    本文为原创,如有转载,请注明出处:http://www.cnblogs.com/jackybu 前言 章节: 1.需求描述以及c/c++实现日期和月历的基本操作 2.ios实现自绘日期选择控件 3.a ...

随机推荐

  1. 使用Attribute校验对象属性数据是否合法

    一.前言 说来惭愧,做了几年ASP.NET最近才有机会使用MVC开发生产项目.项目中新增.编辑表单提交存在大量服务端数据格式校验,各种if else显得代码过于繁琐,特别是表单数据比较多的时候尤为恶心 ...

  2. (转载)SQL Reporting Services (Expression Examples)

    https://msdn.microsoft.com/en-us/library/ms157328(v=SQL.100).aspx Expressions are used frequently in ...

  3. Python写地铁的到站的原理简易版

    Python地铁的到站流程及原理(个人理解) 今天坐地铁看着站牌就莫名的想如果用Python写其工作原理 是不是很简单就小试牛刀了下大佬们勿喷纯属小弟个人理解 首先来看看地铁上显示的站牌如下: 就想这 ...

  4. hadoop2.6.2+hbase+zookeeper环境搭建

    1.hadoop环境搭建,版本:2.6.2,参考:http://www.cnblogs.com/bookwed/p/5251393.html 启动服务:在master机器上,进入hadoop安装目录, ...

  5. S3C6410移植apache和php

    需要准备的东西: Apache-1.3.39 for linux Php-4.4.8 for linux Ubuntu amd64位 PC机 6410开发板,我用的是友善之臂 交叉编译: 交叉编译呢, ...

  6. centos 7 install python spynner

    yum install python-devel yum install libXtst-devel pip install autopy pip install spynner import spy ...

  7. linux Shell脚本编码格式

    在windows下开发,写好的shell脚本,放到linux上执行,往往会因为编码格式的问题存在兼容问题: -bash: ./lbs-circle-server.sh: /bin/sh^M: bad ...

  8. PhotoShop算法原理解析系列 - 风格化---》查找边缘。

    之所以不写系列文章一.系列文章二这样的标题,是因为我不知道我能坚持多久.我知道我对事情的表达能力和语言的丰富性方面的天赋不高.而一段代码需要我去用心的把他从基本原理-->初步实现-->优化 ...

  9. [NOIP2014]自测

    这两天做完了2014年的noip提高. 因为以前看了SDSC2016时gty的课件,题目思路都知道了一点,做起来没多大困难. 100+100+75+100+100+70=545 里面水分好多,好多题都 ...

  10. 配置jpa

    persistence.xml <?xml version="1.0" encoding="UTF-8"?> <persistence ver ...