# -*- coding: utf-8 -*-
import tkinter as Tk
import pandas as pd
import tushare as ts
import matplotlib.pyplot as plt
from mpl_finance import candlestick2_ochl
import matplotlib.ticker as ticker
#import numpy as np
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
from matplotlib.backend_bases import key_press_handler
#from matplotlib.figure import Figure
import tkinter
begin_time = '2017-07-01'
end_time = '2019-09-01'
code = "000001"
df = ts.get_hist_data(code, start=begin_time)#, end=end_time
df.to_csv('000001.csv')
df = df.sort_index(0)
df_idx = df.index.values
root = Tk.Tk()
root.minsize(900,700)
# df.plot()
fig1, ax = plt.subplots(figsize=(15, 6)) # 设置图片大小。
# https://matplotlib.org/api/finance_api.html#module-matplotlib.finance
# matplotlib.finance.candlestick2_ochl(ax, opens, closes, highs, lows, width=4, colorup='r', colordown='g', alpha=0.75)
candlestick2_ochl(ax = ax,
opens=df["open"].values, closes=df["close"].values,
highs=df["high"].values, lows=df["low"].values,
width=0.75, colorup='r', colordown='g', alpha=0.75)
df["5d"] = df["close"].rolling(window = 5).mean() #周线
df["10d"] =df["close"].rolling(window = 10).mean() #半月线
df["20d"] = df["close"].rolling(window = 20).mean() #月线
df["60d"] = df["close"].rolling(window = 60).mean() #季度线
df[["close","5d","10d","20d","60d",]].plot(ax=ax,figsize=(20,10), grid=True)
ax.xaxis.set_major_locator(ticker.MaxNLocator(20))
# 设置自动格式化时间。
def mydate_formatter(x,pos):
try:
return df_idx[int(x)]
except IndexError:
return ''
ax.xaxis.set_major_formatter(ticker.FuncFormatter(mydate_formatter))
plt.setp(plt.gca().get_xticklabels(), rotation=45, horizontalalignment='right')
ax.grid(True)
plt.title(code)
fig2, ax2 = plt.subplots(figsize=(15, 6)) # 设置图片大小。
df["volume5"]=df["volume"].rolling(window = 5).mean() #周线
df["volume10"]=df["volume"].rolling(window = 10).mean() #周线
df["volume30"]=df["volume"].rolling(window = 30).mean() #周线
df[["volume","volume5","volume10","volume30"]].plot(ax=ax2,figsize=(20,10), grid=True)
#plt.show()
canvas = FigureCanvasTkAgg(fig1, master=root)
canvas.draw() # 注意show方法已经过时了,这里改用draw
canvas.get_tk_widget().pack(side=tkinter.TOP, # 上对齐
fill=tkinter.BOTH, # 填充方式
expand=tkinter.YES) # 随窗口大小调整而调整
# matplotlib的导航工具栏显示上来(默认是不会显示它的)
toolbar = NavigationToolbar2Tk(canvas, root)
toolbar.update()
canvas._tkcanvas.pack(side=tkinter.TOP, # get_tk_widget()得到的就是_tkcanvas
fill=tkinter.BOTH,
expand=tkinter.YES)
canvas = FigureCanvasTkAgg(fig2, master=root)
canvas.draw() # 注意show方法已经过时了,这里改用draw
canvas.get_tk_widget().pack(side=tkinter.TOP, # 上对齐
fill=tkinter.BOTH, # 填充方式
expand=tkinter.YES) # 随窗口大小调整而调整
toolbar = NavigationToolbar2Tk(canvas, root)
toolbar.update()
canvas._tkcanvas.pack(side=tkinter.TOP, # get_tk_widget()得到的就是_tkcanvas
fill=tkinter.BOTH,
expand=tkinter.YES)
main_frame = Tk.Frame(root)
main_frame.pack()
menu_frame = Tk.Frame(root)
menu_frame.pack()
tab_frame = Tk.Frame(root)
tab_frame.pack()
chart_frame = Tk.Frame(root)
chart_frame.pack()
statusbar_frame = Tk.Frame(root)
statusbar_frame.pack(side=Tk.BOTTOM, fill=Tk.BOTH, expand=True)
# functions ---------------------------------------------
def on_key_event(event):
"""键盘事件处理"""
print("你按了%s" % event.key)
key_press_handler(event, canvas, toolbar)
# 绑定上面定义的键盘事件处理函数
canvas.mpl_connect('key_press_event', on_key_event)
def NewFile():
print ("New File!")
def OpenFile():
name = askopenfilename()
print (name)
def About():
print ("This is a simple example of a menu")
# ----------------------------------------------------------
# Menu --------------------------------------------------------
menu = Tk.Menu(menu_frame)
root.config(menu=menu)
filemenu = Tk.Menu(menu)
menu.add_cascade(label="File", menu=filemenu)
filemenu.add_command(label="New", command=NewFile)
filemenu.add_command(label="Open...", command=OpenFile)
filemenu.add_separator()
filemenu.add_command(label="Exit", command=root.destroy)
helpmenu = Tk.Menu(menu)
menu.add_cascade(label="Help", menu=helpmenu)
helpmenu.add_command(label="About...", command=About)
root.mainloop()
没有合适的资源?快使用搜索试试~ 我知道了~
将matplotlib绘制的股票的图表镶嵌入tkinter做的界面中.zip
共2个文件
zip:1个
py:1个
需积分: 14 74 下载量 81 浏览量
2019-09-01
19:13:43
上传
评论 4
收藏 4KB ZIP 举报
温馨提示
用python tkinter显示股票的数据,将绘制的图形显示到tkinter:创建属于root的canvas画布,并将图f置于画布上 漂亮的界面是量化程序的脸面,直观专业的界面能帮助我们了解股票的走势和形象地展示量化交易的结果。本文介绍如何使用用python tkinter matplotlib做出专业的K线图和展示各种技术指标:
资源推荐
资源详情
资源评论
收起资源包目录
将matplotlib绘制的股票的图表镶嵌入tkinter做的界面中.zip (2个子文件)
将matplotlib绘制的股票的图表镶嵌入tkinter做的界面中
enbed_Kline_to_TK.zip 2KB
enbed_Kline_to_TK.py 5KB
共 2 条
- 1
资源评论
xie3802
- 粉丝: 3
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功