利用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实现简单HTML表格解析的方法
Jun 15 Python
python简单分割文件的方法
Jul 30 Python
python利用有道翻译实现"语言翻译器"的功能实例
Nov 14 Python
python中csv文件的若干读写方法小结
Jul 04 Python
nohup后台启动Python脚本,log不刷新的解决方法
Jan 14 Python
在Pycharm中设置默认自动换行的方法
Jan 16 Python
对python For 循环的三种遍历方式解析
Feb 01 Python
python笔记之mean()函数实现求取均值的功能代码
Jul 05 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
Aug 27 Python
python获取引用对象的个数方式
Dec 20 Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
May 18 Python
详解Python IO口多路复用
Jun 17 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安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
2013/07/05 PHP
微信接口生成带参数的二维码
2017/07/31 PHP
Ext grid 添加右击菜单
2009/11/26 Javascript
JavaScript 学习技巧
2010/02/17 Javascript
javascript dom代码应用 简单的相册[firefox only]
2010/06/12 Javascript
jQuery不间断滚动效果(模拟百度新闻支持文字/图片/垂直滚动)
2013/02/05 Javascript
js控制的遮罩层实例介绍
2013/05/29 Javascript
原生Js页面滚动延迟加载图片实现原理及过程
2013/06/24 Javascript
简单几行JS Code实现IE邮件转发新浪微博
2013/07/03 Javascript
Js实现手机发送验证码时按钮延迟操作
2014/06/20 Javascript
jquery获取radio值实例
2014/10/16 Javascript
jQuery判断对象是否存在的方法
2015/02/05 Javascript
js实现类似MSN提示的页面效果代码分享
2015/08/24 Javascript
Node.js实现数据推送
2016/04/14 Javascript
JS中正则表达式全局匹配模式 /g用法详解
2017/04/01 Javascript
Vue表单验证插件Vue Validator使用方法详解
2017/04/07 Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
2018/11/27 Javascript
vue-router两种模式区别及使用注意事项详解
2019/08/01 Javascript
JavaScript算法学习之冒泡排序和选择排序
2019/11/02 Javascript
Python 调用Java实例详解
2017/06/02 Python
程序员写Python时的5个坏习惯,你有几条?
2018/11/26 Python
python如果快速判断数字奇数偶数
2019/11/13 Python
Python判断字符串是否为空和null方法实例
2020/04/26 Python
解决keras backend 越跑越慢问题
2020/06/18 Python
世界上最大的在线学习和教学市场:Udemy
2017/11/08 全球购物
成品仓管员岗位职责
2013/12/11 职场文书
采购部部门职责
2013/12/15 职场文书
大学生志愿者感言
2014/01/15 职场文书
2014升学宴答谢词
2014/01/26 职场文书
个人工作主要事迹
2014/05/08 职场文书
物理教育专业求职信
2014/06/25 职场文书
出租房屋协议书
2014/09/14 职场文书
行政文员实习自我鉴定范文
2014/09/14 职场文书
财政局个人年终总结
2015/03/03 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书
openstack云计算keystone组件工作介绍
2022/04/20 Servers