利用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传递中文参数的问题
Aug 04 Python
python3中str(字符串)的使用教程
Mar 23 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
Nov 23 Python
浅谈Python中的zip()与*zip()函数详解
Feb 24 Python
详谈Numpy中数组重塑、合并与拆分方法
Apr 17 Python
Python利用正则表达式实现计算器算法思路解析
Apr 25 Python
numpy matrix和array的乘和加实例
Jun 28 Python
在Python中使用defaultdict初始化字典以及应用方法
Oct 31 Python
对Python3之方法的覆盖与super函数详解
Jun 26 Python
python numpy 常用随机数的产生方法的实现
Aug 21 Python
python+rsync精确同步指定格式文件
Aug 29 Python
Python 处理表格进行成绩排序的操作代码
Jul 26 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的FTP学习(一)
2006/10/09 PHP
用Zend Encode编写开发PHP程序
2010/02/21 PHP
php命令行(cli)模式下报require 加载路径错误的解决方法
2015/11/23 PHP
php遍历、读取文件夹中图片并分页显示图片的方法
2016/11/15 PHP
php数值转换时间及时间转换数值用法示例
2017/05/18 PHP
PHP lcfirst()函数定义与用法
2019/03/08 PHP
刷新时清空文本框内容的js代码
2007/04/23 Javascript
js获取时间并实现字符串和时间戳之间的转换
2015/01/05 Javascript
js正则表达式验证邮件地址
2015/11/12 Javascript
JavaScript中浅讲ajax图文详解
2016/11/11 Javascript
jQuery-mobile事件监听与用法详解
2016/11/23 Javascript
使用base64对图片的二进制进行编码并用ajax进行显示
2017/01/03 Javascript
nodejs中sleep功能实现暂停几秒的方法
2017/07/12 NodeJs
ES6中的rest参数与扩展运算符详解
2017/07/18 Javascript
微信小程序WebSocket实现聊天对话功能
2018/07/06 Javascript
一份超级详细的Vue-cli3.0使用教程【推荐】
2018/11/15 Javascript
详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
2018/11/21 Javascript
vue2.0实现的tab标签切换效果(内容可自定义)示例
2019/02/11 Javascript
javascript使用substring实现的展开与收缩文字功能示例
2019/06/17 Javascript
Python自动化测试Eclipse+Pydev 搭建开发环境
2016/08/15 Python
Python判断两个对象相等的原理
2017/12/12 Python
Python3最长回文子串算法示例
2019/03/04 Python
使用celery执行Django串行异步任务的方法步骤
2019/06/06 Python
基于Django框架的权限组件rbac实例讲解
2019/08/31 Python
Python实现word2Vec model过程解析
2019/12/16 Python
Python抓新型冠状病毒肺炎疫情数据并绘制全国疫情分布的代码实例
2020/02/05 Python
Python使用ElementTree美化XML格式的操作
2020/03/06 Python
python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
2020/03/08 Python
python实现梯度下降和逻辑回归
2020/03/24 Python
Alba Moda德国网上商店:意大利时尚女装销售
2016/11/14 全球购物
为什么group by 和order by会使查询变慢
2014/05/16 面试题
请解释virtual关键字的含义
2015/06/17 面试题
业务经理的岗位职责
2013/11/16 职场文书
美术兴趣小组活动总结
2014/07/07 职场文书
2014年教育教学工作总结
2014/11/13 职场文书
2015年度工程师评职称工作总结
2015/10/14 职场文书