利用python numpy+matplotlib绘制股票k线图的方法


Posted in Python onJune 26, 2019

一、python numpy + matplotlib 画股票k线图

# -- coding: utf-8 --
import requests
import numpy as np  
from matplotlib import pyplot as plt  
from matplotlib import animation
 
fig = plt.figure(figsize=(8,6), dpi=72,facecolor="white")
axes = plt.subplot(111)
axes.set_title('Shangzheng')
axes.set_xlabel('time')
line, = axes.plot([], [], linewidth=1.5, linestyle='-')
alldata = []
 
def dapan(code):
	url = 'http://hq.sinajs.cn/?list='+code
	r = requests.get(url)
	data = r.content[21:-3].decode('gbk').encode('utf8').split(',')
	alldata.append(data[3])
	axes.set_ylim(float(data[5]), float(data[4]))
	return alldata
 
def init():
	line.set_data([], [])
	return line
 
def animate(i): 
 	axes.set_xlim(0, i+10)
 	x = range(i+1)
 	y = dapan('sh000001')
 	line.set_data(x, y)
 	return line
 
anim=animation.FuncAnimation(fig, animate, init_func=init, frames=10000, interval=5000)
 
plt.show()

二、使用matplotlib轻松绘制股票K线图

K线图是看懂股票走势的最基本知识,K线分为阴线和阳线,阴线和阳线都包含了最低价、开盘价、最高价和收盘价,一般都K线如下图所示:

利用python numpy+matplotlib绘制股票k线图的方法

在使用Python进行股票分析的过程中,我们可以很容易的对K线图进行绘制,下面介绍两种情形下的K线图绘制:

1. 股票数据来源于Matplotlib:

# 导入需要的库
import tushare as ts
import matplotlib.pyplot as plt
import matplotlib.finance as mpf
 
%matplotlib inline
 
# 设置历史数据区间
date1 = (2014, 12, 1) # 起始日期,格式:(年,月,日)元组
date2 = (2016, 12, 1) # 结束日期,格式:(年,月,日)元组
# 从雅虎财经中获取股票代码601558的历史行情
quotes = mpf.quotes_historical_yahoo_ohlc('601558.ss', date1, date2)
 
# 创建一个子图 
fig, ax = plt.subplots(facecolor=(0.5, 0.5, 0.5))
fig.subplots_adjust(bottom=0.2)
# 设置X轴刻度为日期时间
ax.xaxis_date()
# X轴刻度文字倾斜45度
plt.xticks(rotation=45)
plt.title("股票代码:601558两年K线图")
plt.xlabel("时间")
plt.ylabel("股价(元)")
mpf.candlestick_ohlc(ax,quotes,width=1.2,colorup='r',colordown='green')
plt.grid(True)

绘制出来的K线图如下:

利用python numpy+matplotlib绘制股票k线图的方法

2.股票数据来源于Tushare:

因为从Tushare中获取到的数据为Pandas的DataFrame结构,需要将其转换为matplotlib.finance.candlestick_ohlc()方法能够处理的数据结构。

from matplotlib.pylab import date2num
import datetime
 
# 对tushare获取到的数据转换成candlestick_ohlc()方法可读取的格式
data_list = []
for dates,row in hist_data.iterrows():
  # 将时间转换为数字
  date_time = datetime.datetime.strptime(dates,'%Y-%m-%d')
  t = date2num(date_time)
  open,high,low,close = row[:4]
  datas = (t,open,high,low,close)
  data_list.append(datas)
 
# 创建子图
fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.2)
# 设置X轴刻度为日期时间
ax.xaxis_date()
plt.xticks(rotation=45)
plt.yticks()
plt.title("股票代码:601558两年K线图")
plt.xlabel("时间")
plt.ylabel("股价(元)")
mpf.candlestick_ohlc(ax,data_list,width=1.5,colorup='r',colordown='green')
plt.grid()

同样也能绘制会一样的K线图:

利用python numpy+matplotlib绘制股票k线图的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python数据结构树和二叉树简介
Apr 29 Python
Python内置的字符串处理函数详细整理(覆盖日常所用)
Aug 19 Python
python使用webbrowser浏览指定url的方法
Apr 04 Python
python实现用户登录系统
May 21 Python
python 上下文管理器使用方法小结
Oct 10 Python
Python探索之创建二叉树
Oct 25 Python
Python IDLE清空窗口的实例
Jun 25 Python
python图形工具turtle绘制国际象棋棋盘
May 23 Python
Django配置文件代码说明
Dec 04 Python
利用Python如何实时检测自身内存占用
May 09 Python
Python 执行矩阵与线性代数运算
Aug 01 Python
10行Python代码实现Web自动化管控的示例代码
Aug 14 Python
python读csv文件时指定行为表头或无表头的方法
Jun 26 #Python
对Python3之方法的覆盖与super函数详解
Jun 26 #Python
python调用pyaudio使用麦克风录制wav声音文件的教程
Jun 26 #Python
python装饰器常见使用方法分析
Jun 26 #Python
解决python super()调用多重继承函数的问题
Jun 26 #Python
Python实现获取系统临时目录及临时文件的方法示例
Jun 26 #Python
python里dict变成list实例方法
Jun 26 #Python
You might like
PHP设计模式之结构模式的深入解析
2013/06/13 PHP
PhpStorm terminal无法输入命令的解决方法
2016/10/09 PHP
php获取'/'传参的值简单方法
2017/07/13 PHP
JavaScript DOM 学习第二章 编辑文本
2010/02/19 Javascript
JavaScript CSS修改学习第六章 拖拽
2010/02/19 Javascript
JavaScript 基础篇之对象、数组使用介绍(三)
2012/04/07 Javascript
js根据日期判断星座的示例代码
2014/01/23 Javascript
浅谈JavaScript中的对象及Promise对象的实现
2015/11/15 Javascript
怎么限制input的text里输入的值只能是数字(正则、js)
2016/05/16 Javascript
Bootstrap基本组件学习笔记之导航(10)
2016/12/07 Javascript
JavaScript基本类型值-Number类型
2017/02/24 Javascript
node.js 利用流实现读写同步,边读边写的方法
2017/09/11 Javascript
深入理解Vue.js源码之事件机制
2017/09/27 Javascript
Angular4 组件通讯方法大全(推荐)
2018/07/12 Javascript
深入学习JavaScript中的bom
2019/05/27 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
2020/05/30 jQuery
nodejs+express最简易的连接数据库的方法
2020/12/23 NodeJs
[01:16:13]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第一场 2月22日
2021/03/11 DOTA
django实现用户登陆功能详解
2017/12/11 Python
Pandas 同元素多列去重的实例
2018/07/03 Python
python版opencv摄像头人脸实时检测方法
2018/08/03 Python
python代码实现TSNE降维数据可视化教程
2020/02/28 Python
Erwin Müller穆勒家居瑞士官网:您整个家庭的邮购公司
2019/12/28 全球购物
德国亚洲食品网上商店:asiafoodland.de
2019/12/28 全球购物
康拓普公司Java笔面试
2016/09/23 面试题
超市营业员求职简历的自我评价
2013/10/17 职场文书
计算机科学系职业生涯规划书
2014/03/08 职场文书
校园新闻广播稿5篇
2014/10/10 职场文书
2014矛盾纠纷排查调处工作总结
2014/12/09 职场文书
幼儿教师辞职信
2015/02/27 职场文书
建筑质检员岗位职责
2015/04/08 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书
领导欢送会主持词
2015/07/06 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
医院消毒隔离制度
2015/08/05 职场文书
Python中的socket网络模块介绍
2022/07/23 Python