利用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中将阿拉伯数字转换成中文的实现代码
May 19 Python
Python中的元类编程入门指引
Apr 15 Python
微信 用脚本查看是否被微信好友删除
Oct 28 Python
Python环境搭建之OpenCV的步骤方法
Oct 20 Python
详解如何在python中读写和存储matlab的数据文件(*.mat)
Feb 24 Python
Python处理CSV与List的转换方法
Apr 19 Python
python递归全排列实现方法
Aug 18 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
Dec 10 Python
python 随机森林算法及其优化详解
Jul 11 Python
django-rest-framework 自定义swagger过程详解
Jul 18 Python
Python实现队列的方法示例小结【数组,链表】
Feb 22 Python
Python logging自定义字段输出及打印颜色
Nov 30 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随机显示图片的简单示例
2014/02/15 PHP
PHP程序漏洞产生的原因分析与防范方法说明
2014/03/06 PHP
PHP使用phpunit进行单元测试示例
2019/09/23 PHP
基于php伪静态的实现方法解析
2020/07/31 PHP
10个基于Jquery的幻灯片插件教程
2010/10/29 Javascript
jquery组件使用中遇到的问题整理及解决
2014/02/21 Javascript
jQuery中多个元素的Hover事件解决方案
2014/06/12 Javascript
jQuery实现渐变弹出层和弹出菜单的方法
2015/02/20 Javascript
Nodejs的express使用教程
2015/11/23 NodeJs
js代码实现点击按钮出现60秒倒计时
2021/01/28 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
2016/02/18 Javascript
JavaScript中的Object对象学习教程
2016/05/20 Javascript
javascript中获取class的简单实现
2016/07/12 Javascript
JS数组去重(4种方法)
2017/03/27 Javascript
浅谈HTTP 缓存的那些事儿
2018/10/17 Javascript
基于vue开发微信小程序mpvue-docs跳转页面功能
2019/04/10 Javascript
JS call()及apply()方法使用实例汇总
2020/07/11 Javascript
Node.js web 应用如何封装到Docker容器中
2020/09/01 Javascript
vuex刷新后数据丢失的解决方法
2020/10/18 Javascript
[00:34]DOTA2上海特级锦标赛 Spirit战队宣传片
2016/03/04 DOTA
[02:44]重置世界,颠覆未来——DOTA2 7.23版本震撼上线
2019/12/01 DOTA
关于Python元祖,列表,字典,集合的比较
2017/01/06 Python
django写用户登录判定并跳转制定页面的实例
2019/08/21 Python
Pycharm+Python+PyQt5使用详解
2019/09/25 Python
Python实现自动访问网页的例子
2020/02/21 Python
django中的数据库迁移的实现
2020/03/16 Python
NUK奶瓶美国官网:NUK美国
2016/09/26 全球购物
美国首屈一指的礼品篮供应商:GiftTree
2018/01/06 全球购物
李维斯牛仔裤荷兰官方网站:Levi’s NL
2020/08/23 全球购物
C#和SQL Server的面试题
2016/08/12 面试题
会计与出纳自荐书范文
2014/03/16 职场文书
2015年污水处理厂工作总结
2015/05/26 职场文书
教师读书活动心得体会
2016/01/14 职场文书
协议书格式模板
2016/03/24 职场文书
六种css3实现的边框过渡效果
2021/04/22 HTML / CSS
Python使用BeautifulSoup4修改网页内容
2022/05/20 Python