该例是实现了 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 混合编程示例一个的更多相关文章
-
使用 ctypes 进行 Python 和 C 的混合编程
Python 和 C 的混合编程工具有很多,这里介绍 Python 标准库自带的 ctypes 模块的使用方法. 初识 Python 的 ctypes 要使用 C 函数,需要先将 C 编译成动态链接库 ...
-
python下的复杂网络编程包networkx的安装及使用
由于py3.x与工具包的兼容问题,这里采用py2.7 1.python下的复杂网络编程包networkx的使用: http://blog.sina.com.cn/s/blog_720448d30101 ...
-
Python和C++的混合编程(使用Boost编写Python的扩展包)
想要享受更轻松愉悦的编程,脚本语言是首选.想要更敏捷高效,c++则高山仰止.所以我一直试图在各种通用或者专用的脚本语言中将c++的优势融入其中.原来贡献过一篇<c++和js的混合编程>也是 ...
-
Fortran与C/C++混合编程示例
以下例子均来自网络,只是稍作了编辑,方便今后查阅. 子目录 (一) Fortran调用C语言 (二) C语言调用Fortran (三) C++ 调用Fortran (四) Fortran 调用 C++ ...
-
python下的复杂网络编程包networkx的使用(摘抄)
原文:http://blog.sciencenet.cn/home.php?mod=space&uid=404069&do=blog&classid=141080&vi ...
-
python下的MySQL数据库编程
https://www.tutorialspoint.com/python/python_database_access.htm if you need to access an Oracle dat ...
-
Matlab与.NET基于类型安全的接口混合编程入门
原文:[原创]Matlab与.NET基于类型安全的接口混合编程入门 如果这些文章对你有用,有帮助,期待更多开源组件介绍,请不要吝啬手中的鼠标. [原创分享]Matlab.NET混编调用Figure窗体 ...
-
CUDA+OpenGL混合编程
CUDA+OpenGL混合编程示例: #include <stdio.h> #include <stdlib.h> #include "GL\glew.h" ...
-
用c/c++混合编程方式为ios/android实现一个自绘日期选择控件(一)
本文为原创,如有转载,请注明出处:http://www.cnblogs.com/jackybu 前言 章节: 1.需求描述以及c/c++实现日期和月历的基本操作 2.ios实现自绘日期选择控件 3.a ...
随机推荐
-
java 12-3 StringBuffer的添加和删除功能
1. StringBuffer的添加功能: public StringBuffer append(String str):可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身 public ...
-
九度OJ 1113 二叉树
题目地址:http://ac.jobdu.com/problem.php?pid=1113 题目描述: 如上所示,由正整数1,2,3……组成了一颗特殊二叉树.我们已知这个二叉树的最后一个结点是n.现在 ...
-
CloudStack cloud数据库op_host_capacity表type与控制板上的内容的对应关系
listCapacity: type 名称 0 内存 1 CPU 3 主存储 4 公用IP地址 5 管理类IP地址 6 辅助存储 7 VLAN 9 本地存储 ViewResponseHelper.ja ...
-
SpringBoot系列: Maven多项目管理
这篇是 maven 项目管理的第二篇, 讲解使用 maven 进行多个项目管理, 之前有一篇是 maven 的基础知识. SpringBoot系列: Eclipse+Maven环境准备 一个完整的解决 ...
-
Pytorch快速入门及在线体验
本文搭配了Pytorch在线环境,可以直接在线体验. Pytorch是Facebook 的 AI 研究团队发布了一个基于 Python的科学计算包,旨在服务两类场合: 1.替代numpy发挥GPU潜能 ...
-
day05作业---字典
# 字典找位置 用键, 列表.元组找位置 用索引'''1.有如下变量(tu是个元祖),请实现要求的功能tu = ("alex", [11, 22, {"k1": ...
-
C# if else 使物体在X轴循环移动
if( transform.position.x > -15 && transform.rotation.y == 0 ) { //小鸟X轴反方向移动速度 transform.p ...
-
LNMP中常见的502错误及处理方法
LNMP配置完成以后,经常遇到502 Bad Gateway的错误提示,究其原因多为2种.下面对这两方面的问题进行分析: 1. 配置方面的错误 配置错误中,或者因为php-fpm找不到路径,或者是权限 ...
-
OpenSSL 结构体
X509_STORE 头文件:x509_vfy.h 定义 typedef struct x509_store_st X509_STORE; struct x509_store_st { /* The ...
-
codeforces 55D 数位dp
D. Beautiful numbers time limit per test 4 seconds memory limit per test 256 megabytes input standar ...