利用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实现扫描指定目录下的子目录及文件的方法
Jul 16 Python
Python发送email的3种方法
Apr 28 Python
关于python pyqt5安装失败问题的解决方法
Aug 08 Python
用Python写王者荣耀刷金币脚本
Dec 21 Python
Python制作词云的方法
Jan 03 Python
python实现图像识别功能
Jan 29 Python
Python求一批字符串的最长公共前缀算法示例
Mar 02 Python
python爬虫 urllib模块反爬虫机制UA详解
Aug 20 Python
python datetime中strptime用法详解
Aug 29 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
Jan 08 Python
Python 找出出现次数超过数组长度一半的元素实例
May 11 Python
利用python批量爬取百度任意类别的图片的实现方法
Oct 07 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设计模式之解释器模式的深入解析
2013/06/13 PHP
php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
2014/04/24 PHP
PHP关联数组实现根据元素值删除元素的方法
2015/06/26 PHP
php实现zip文件解压操作
2015/11/03 PHP
PHP实现的一致性Hash算法详解【分布式算法】
2018/03/31 PHP
js prototype截取字符串函数
2010/04/01 Javascript
jQuery.Validate验证库的使用介绍
2013/04/26 Javascript
jquery放大镜效果超漂亮噢
2013/11/15 Javascript
javascript中数组的冒泡排序使用示例
2013/12/18 Javascript
使用JS+plupload直接批量上传图片到又拍云
2014/12/01 Javascript
在JavaScript应用中实现延迟加载的方法
2015/06/25 Javascript
jQuery实现浮动层随浏览器滚动条滚动的方法
2015/09/22 Javascript
js改变css样式的三种方法推荐
2016/06/28 Javascript
全面了解addEventListener和on的区别
2016/07/14 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
2016/10/09 Javascript
NodeJS遍历文件生产文件列表功能示例
2017/01/22 NodeJs
vue2.0项目实现路由跳转的方法详解
2018/06/21 Javascript
js中arguments对象的深入理解
2019/05/14 Javascript
BootStrap前端框架使用方法详解
2020/02/26 Javascript
angula中使用iframe点击后不执行变更检测的问题
2020/05/10 Javascript
对vue生命周期的深入理解
2020/12/03 Vue.js
JS+CSS实现过渡特效
2021/01/02 Javascript
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
2017/09/22 Python
Python 列表去重去除空字符的例子
2019/07/20 Python
基于python 微信小程序之获取已存在模板消息列表
2019/08/05 Python
用 Django 开发一个 Python Web API的方法步骤
2020/12/03 Python
C#中的验证控件有几种
2014/03/08 面试题
中学教师管理制度
2014/01/14 职场文书
《胖乎乎的小手》教学反思
2014/02/26 职场文书
项目合作协议书
2014/04/16 职场文书
元旦趣味活动方案
2014/08/22 职场文书
幼儿园保教工作总结2015
2015/10/15 职场文书
《红领巾真好》教学反思
2016/02/16 职场文书
JS数组的常用方法整理
2021/03/31 Javascript
MySQL慢查询中的commit慢和binlog中慢事务的区别
2022/06/16 MySQL
win10电脑老是死机怎么办?win10系统老是死机的解决方法
2022/08/05 数码科技