利用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的web框架编写前端模版的教程
Apr 30 Python
python3写的简单本地文件上传服务器实例
Jun 04 Python
Python的argparse库使用详解
Oct 09 Python
Python中的Socket 与 ScoketServer 通信及遇到问题解决方法
Apr 01 Python
Python后台开发Django会话控制的实现
Apr 15 Python
用python求一个数组的和与平均值的实现方法
Jun 29 Python
python网络编程之多线程同时接受和发送
Sep 03 Python
numpy:np.newaxis 实现将行向量转换成列向量
Nov 30 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
Apr 10 Python
python代码中怎么换行
Jun 17 Python
完美解决keras 读取多个hdf5文件进行训练的问题
Jul 01 Python
基于Django集成CAS实现流程详解
Nov 28 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
Ping服务的php实现方法,让网站快速被收录
2012/02/04 PHP
php跨服务器访问方法小结
2015/05/12 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
js 变量类型转换常用函数与代码[比较全]
2009/12/01 Javascript
Js获取事件对象代码
2010/08/05 Javascript
js各种验证文本框输入格式(正则表达式)
2010/10/22 Javascript
zTree插件之多选下拉菜单实例代码
2013/11/06 Javascript
JS+CSS 制作的超级简单的下拉菜单附图
2013/11/22 Javascript
js实现按钮加背景图片常用方法
2014/11/01 Javascript
javascript比较两个日期的先后示例代码
2014/12/31 Javascript
JS与jQ读取xml文件的方法
2015/12/08 Javascript
node中的session的具体使用
2018/09/14 Javascript
vue router的基本使用和配置教程
2018/11/05 Javascript
在Create React App中启用Sass和Less的方法示例
2019/01/16 Javascript
解决vuex刷新状态初始化的方法实现
2019/08/15 Javascript
layui 地区三级联动 form select 渲染的实例
2019/09/27 Javascript
js实现固定区域内的不重叠随机圆
2019/10/24 Javascript
解决vue页面刷新,数据丢失的问题
2020/11/24 Vue.js
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
用python读写excel的方法
2014/11/18 Python
PyQt 线程类 QThread使用详解
2017/07/16 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
2019/01/30 Python
python字典的遍历3种方法详解
2019/08/10 Python
docker-py 用Python调用Docker接口的方法
2019/08/30 Python
Python自带的IDE在哪里
2020/07/01 Python
美国最大的烧烤架和户外生活用品专业零售商:Barbeques Galore
2021/01/09 全球购物
澳大利亚在线床零售商:Bedworks
2020/09/01 全球购物
应用电子专业学生的自我评价
2013/10/16 职场文书
幼儿教师自我鉴定
2013/11/02 职场文书
大学生咖啡店创业计划书
2014/01/21 职场文书
亲子读书活动方案
2014/02/22 职场文书
大学军训感言800字
2014/02/27 职场文书
学生党员一帮一活动总结
2014/07/08 职场文书
2015年发展党员工作总结报告
2015/03/31 职场文书
返乡农民工证明
2015/06/24 职场文书
SpringBoot整合JWT的入门指南
2021/06/29 Java/Android