利用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之eval()函数危险性浅析
Jul 03 Python
python保存字符串到文件的方法
Jul 01 Python
微信 用脚本查看是否被微信好友删除
Oct 28 Python
python中利用Future对象异步返回结果示例代码
Sep 07 Python
对Python中实现两个数的值交换的集中方法详解
Jan 11 Python
Pycharm新手教程(只需要看这篇就够了)
Jun 18 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
Jul 16 Python
pytorch如何冻结某层参数的实现
Jan 10 Python
Pyqt5 关于流式布局和滚动条的综合使用示例代码
Mar 24 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
May 19 Python
Python读取pdf表格写入excel的方法
Jan 22 Python
如何理解及使用Python闭包
Jun 01 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
dedecms防止FCK乱格式化你的代码的修改方法
2007/03/17 PHP
PHP 创建标签云函数代码
2010/05/26 PHP
JQuery 拾色器插件发布-jquery.icolor.js
2010/10/20 Javascript
ExtJS中文乱码之GBK格式编码解决方案及代码
2013/01/20 Javascript
JavaScript实现的一个日期格式化函数分享
2014/12/06 Javascript
jQuery控制Div拖拽效果完整实例分析
2015/04/15 Javascript
JavaScript实现拖拽网页内元素的方法
2015/04/15 Javascript
再谈JavaScript线程
2015/07/10 Javascript
再谈JavaScript异步编程
2016/01/27 Javascript
javascript对象的创建和访问
2016/03/08 Javascript
JS获取子窗口中返回的数据实现方法
2016/05/28 Javascript
node.js中 stream使用教程
2016/08/28 Javascript
JS中判断字符串存在和非空的方法
2018/09/12 Javascript
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
vue-router的钩子函数用法实例分析
2019/10/26 Javascript
JavaScript回调函数callback用法解析
2020/01/14 Javascript
8个非常实用的Vue自定义指令
2020/12/15 Vue.js
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
Python 'takes exactly 1 argument (2 given)' Python error
2016/12/13 Python
简单了解什么是神经网络
2017/12/23 Python
python的socket编程入门
2018/01/29 Python
对Python 内建函数和保留字详解
2018/10/15 Python
PyCharm+PySpark远程调试的环境配置的方法
2018/11/29 Python
Python 实现一个手机号码获取妹子名字的功能
2019/09/25 Python
解决PyCharm无法使用lxml库的问题(图解)
2020/12/22 Python
canvas需要在标签里直接定义宽高
2014/12/17 HTML / CSS
法国面料和小百货在线商店:Mondial Tissus
2019/03/23 全球购物
瑞士网球商店:Tennis-Point
2020/03/12 全球购物
文明青少年标兵事迹材料
2014/01/28 职场文书
公务员转正鉴定材料
2014/02/11 职场文书
幼儿园运动会加油词
2014/02/14 职场文书
工资收入证明
2014/10/07 职场文书
使用PDF.js渲染canvas实现预览pdf的效果示例
2021/04/17 Javascript
Python连续赋值需要注意的一些问题
2021/06/03 Python
C站最全Python标准库总结,你想要的都在这里
2021/07/03 Python
Python可变与不可变数据和深拷贝与浅拷贝
2022/04/06 Python