该例是实现了 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. [C#6] 0-概览

    1. C#6 新特性图谱 C#6的新特性主要由编译器(“Roslyn”)带来,并不依赖CLR和.NET Framework的升级,我们可以认为这个版本的新语言特性的主要目的为了简化代码书写方式,让我们 ...

  2. expdp 报The value (30) of MAXTRANS parameter ignored错误的原因诊断

    在使用expdp导出一个表的数据时遇到了下面情况,也不见其提示报错信息,一下子就执行完了,也没有导出我需要的数据 [oracle@getlnx01 dump_dir]$ expdp system/xx ...

  3. 《Java JDK7 学习笔记》课后练习题1

    1.()组织负责监督审查Java相关技术规格的演进. A. JCP B. Apache C. EU D. W3C 2.Java技术规格必须以()正式文件提交审查. A. RFC B. JSR C. I ...

  4. W3School-CSS 轮廓(Outline)实例

    CSS 轮廓(Outline)实例 CSS 实例 CSS 背景实例 CSS 文本实例 CSS 字体(font)实例 CSS 边框(border)实例 CSS 外边距 (margin) 实例 CSS 内 ...

  5. day1 基础总结

    学习博客地址: http://www.cnblogs.com/alex3714/articles/5465198.html 低级语言:接近硬件底层 高级语言:接近用户思维 编程语言: 1. 编译型:c ...

  6. Python字典的基本组成以及用法

    #!/usr/bin/env python# -*- coding:utf-8 -*-"""老规矩以下方法环境2.7.x,请3.x以上版本的朋友记得格式print(输出内 ...

  7. UDT中epoll对CLOSE状态的处理

    epoll_wait()返回可用uid时,对uid取状态,本该是BROKEN的,却取到CLOSED,然而,不能像处理BROKEN事件那样处理CLOSED事件,这样移除不了CLOSED事件,于是epol ...

  8. 关于PB调用Microsoft Web Browser控件的一些问题

    Microsoft Web Browser控件是WINDOWS系统自带的控件,一般不需要单独安装,由于工作的需要,把使用中遇到的问题记录一下,以便查阅. 插入控件: 环境为PB12.0,insert- ...

  9. ubuntu su sudo sudo–i 区别

    sudo : 暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码.不过有时间限制,Ubuntu默认为一次时长15分钟. su : 切换到某某用户模式, ...

  10. C++中的也能使用正则表达式

    正则表达式Regex(regular expression)是一种强大的描述字符序列的工具.在许多语言中都存在着正则表达式,C++11中也将正则表达式纳入了新标准的一部分,不仅如此,它还支持了6种不同 ...