利用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网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)
Jun 09 Python
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
Jul 12 Python
python探索之BaseHTTPServer-实现Web服务器介绍
Oct 28 Python
django之session与分页(实例讲解)
Nov 13 Python
python MysqlDb模块安装及其使用详解
Feb 23 Python
Python发送http请求解析返回json的实例
Mar 26 Python
对pandas中to_dict的用法详解
Jun 05 Python
python创建与遍历List二维列表的方法
Aug 16 Python
tensorflow实现残差网络方式(mnist数据集)
May 26 Python
python中常见错误及解决方法
Jun 21 Python
Anaconda使用IDLE的实现示例
Sep 23 Python
python从ftp获取文件并下载到本地
Dec 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
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
2006/11/18 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
2011/05/29 PHP
PHP获取指定时间段之间的 年,月,天,时,分,秒
2016/06/05 PHP
Apache PHP MySql安装配置图文教程
2016/08/27 PHP
Win7环境下Apache连接MySQL提示连接已重置的解决办法
2017/05/09 PHP
jQuery Dialog 弹出层对话框插件
2010/08/09 Javascript
jquery 学习之一 对象访问
2010/11/23 Javascript
THREE.JS入门教程(4)创建粒子系统
2013/01/24 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
2014/04/11 Javascript
全面兼容的javascript时间格式化函数(比较实用)
2014/05/14 Javascript
js判断元素是否隐藏的方法
2014/06/09 Javascript
jQuery实现hover合成事件的方法
2015/08/06 Javascript
基于JavaScript如何实现ajax调用后台定义的方法
2015/12/29 Javascript
jQuery ajax中使用confirm,确认是否删除的简单实例
2016/06/17 Javascript
JS查找字符串中出现最多的字符及个数统计
2017/02/04 Javascript
Angular在一个页面中使用两个ng-app的方法
2017/02/20 Javascript
原生js更改css样式的两种方式
2017/03/15 Javascript
Bootstrap如何激活导航状态
2017/03/22 Javascript
Vuex之理解Store的用法
2017/04/19 Javascript
浅析Vue 生命周期
2018/06/21 Javascript
angular4自定义组件非input元素实现ngModel双向数据绑定的方法
2018/12/28 Javascript
浅谈目前可以使用ES10的5个新特性
2019/06/25 Javascript
node 文件上传接口的转发的实现
2019/09/23 Javascript
python抓取最新博客内容并生成Rss
2015/05/17 Python
详解python时间模块中的datetime模块
2016/01/13 Python
Django框架中间件(Middleware)用法实例分析
2019/05/24 Python
python 用所有标点符号分隔句子的示例
2019/07/15 Python
提升Python效率之使用循环机制代替递归函数
2019/07/23 Python
python获取响应某个字段值的3种实现方法
2020/04/30 Python
css3一个简易的 LED 数字时钟实现方法
2020/01/15 HTML / CSS
美国零售商店:Blue&Cream
2017/04/07 全球购物
Clarks西班牙官方在线商店:clarks鞋
2019/05/03 全球购物
体育教师个人的自我评价
2014/02/16 职场文书
企业财务人员岗位职责
2015/04/14 职场文书
Python机器学习算法之决策树算法的实现与优缺点
2021/05/13 Python
纯CSS实现一个简单步骤条的示例代码
2022/07/15 HTML / CSS