利用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中日期和时间格式化输出的方法小结
Mar 19 Python
Python利用matplotlib生成图片背景及图例透明的效果
Apr 27 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
Mar 19 Python
用Python写一段用户登录的程序代码
Apr 22 Python
python实现关键词提取的示例讲解
Apr 28 Python
python3.6使用pickle序列化class的方法
Oct 22 Python
python实现转盘效果 python实现轮盘抽奖游戏
Jan 22 Python
Python log模块logging记录打印用法解析
Jan 20 Python
Python自动发送和收取邮件的方法
Aug 12 Python
python PIL模块的基本使用
Sep 29 Python
Python3+Flask安装使用教程详解
Feb 16 Python
OpenCV全景图像拼接的实现示例
Jun 05 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
调频问题解答
2021/03/01 无线电
一个简单的域名注册情况查询程序
2006/10/09 PHP
php 提速工具eAccelerator 配置参数详解
2010/05/16 PHP
php中unlink()、mkdir()、rmdir()等方法的使用介绍
2012/12/21 PHP
php获取网页请求状态程序示例
2014/06/17 PHP
win7 64位系统 配置php最新版开发环境(php+Apache+mysql)
2014/08/15 PHP
为PHP5.4开启Zend OPCode缓存
2014/12/26 PHP
PHP获取网页所有连接的方法(附demo源码下载)
2016/03/30 PHP
php正则判断是否为合法身份证号的方法
2017/03/16 PHP
硬盘浏览程序,保存成网页格式便可使用
2006/12/03 Javascript
用JS控制回车事件的代码
2011/02/20 Javascript
jQuery实现鼠标可拖动调整表格列宽度
2014/05/26 Javascript
AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
2015/01/02 Javascript
js实现仿百度汽车频道选择汽车图片展示实例
2015/05/06 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
bootstrap laydate日期组件使用详解
2017/01/04 Javascript
使用JavaScript开发跨平台的桌面应用详解
2017/07/27 Javascript
JS实现页面打印(整体、局部)
2017/08/18 Javascript
你或许不知道的一些npm实用技巧
2019/07/04 Javascript
js实现淘宝首页的banner栏效果
2019/11/26 Javascript
JavaScript如何使用插值实现图像渐变
2020/06/28 Javascript
[14:19]2018年度COSER大赛-完美盛典
2018/12/16 DOTA
Python3实现抓取javascript动态生成的html网页功能示例
2017/08/22 Python
python取代netcat过程分析
2018/02/10 Python
DRF跨域后端解决之django-cors-headers的使用
2019/01/27 Python
Django 模型类(models.py)的定义详解
2019/07/19 Python
Python 离线工作环境搭建的方法步骤
2019/07/29 Python
Python切割图片成九宫格的示例代码
2020/03/10 Python
推荐技术人员一款Python开源库(造数据神器)
2020/07/08 Python
Python‘==‘ 及 ‘is‘相关原理解析
2020/09/05 Python
浅析PyCharm 的初始设置(知道)
2020/10/12 Python
canvas绘制文本内容自动换行的实现代码
2019/01/14 HTML / CSS
支行行长竞聘演讲稿
2014/05/15 职场文书
党组织领导班子整改方案
2014/10/25 职场文书
2015年六一儿童节活动方案
2015/05/05 职场文书
HTML静态页面获取url参数和UserAgent的实现
2022/08/05 HTML / CSS