利用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类装饰器用法实例
Jun 04 Python
pycharm远程调试openstack的图文教程
Nov 21 Python
python 列表删除所有指定元素的方法
Apr 19 Python
selenium+python自动化测试之多窗口切换
Jan 23 Python
Python 编程速成(推荐)
Apr 15 Python
Python supervisor强大的进程管理工具的使用
Apr 24 Python
pytorch 输出中间层特征的实例
Aug 17 Python
python装饰器的特性原理详解
Dec 25 Python
使用jupyter notebook直接打开.md格式的文件
Apr 10 Python
Python 多进程原理及实现
Dec 21 Python
python利用opencv实现颜色检测
Feb 23 Python
详解Python中*args和**kwargs的使用
Apr 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中比较时间大小实例
2014/08/21 PHP
在PHP语言中使用JSON和将json还原成数组的方法
2016/07/19 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
ExtJs Excel导出并下载IIS服务器端遇到的问题
2011/09/16 Javascript
Array栈方法和队列方法的特点说明
2014/01/24 Javascript
jquery控制select的text/value值为选中状态
2014/06/03 Javascript
基于jquery和svg实现超炫酷的动画特效
2014/12/09 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
2020/07/28 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
2017/03/02 Javascript
详解Vue.js Mixins 混入使用
2017/09/15 Javascript
vue计算属性时v-for处理数组时遇到的一个bug问题
2018/01/21 Javascript
详解基于vue的服务端渲染框架NUXT
2018/06/20 Javascript
JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天的示例代码
2018/12/05 Javascript
Node.js系列之安装配置与基本使用(1)
2019/08/30 Javascript
Js实现复选框的全选、全不选反选功能代码实例
2020/02/28 Javascript
Python获取服务器信息的最简单实现方法
2015/03/05 Python
初步解析Python下的多进程编程
2015/04/28 Python
Python中pip安装非PyPI官网第三方库的方法
2015/06/02 Python
Python3 操作符重载方法示例
2017/11/23 Python
python矩阵/字典实现最短路径算法
2019/01/17 Python
如何使用Python 打印各种三角形
2019/06/28 Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
2019/09/23 Python
浅谈Pytorch torch.optim优化器个性化的使用
2020/02/20 Python
详解pandas中iloc, loc和ix的区别和联系
2020/03/09 Python
python 制作python包,封装成可用模块教程
2020/07/13 Python
css3制作动态进度条以及附加jQuery百分比数字显示
2012/12/13 HTML / CSS
H5 meta小结(前端必看篇)
2016/08/24 HTML / CSS
Canvas globalCompositeOperation
2018/12/18 HTML / CSS
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
碧欧泉法国官网:Biotherm法国
2019/10/23 全球购物
开学典礼感言
2014/02/16 职场文书
小学生竞选班干部演讲稿(5篇)
2014/09/12 职场文书
幼儿园中班班级总结
2015/08/10 职场文书
2016关于学习党章的心得体会
2016/01/15 职场文书
《七月的天山》教学反思
2016/02/19 职场文书
Golang 并发下的问题定位及解决方案
2022/03/16 Golang