利用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的Tornado框架结合memcached页面改善博客性能
Apr 24 Python
Python本地与全局命名空间用法实例
Jun 16 Python
在Python中执行系统命令的方法示例详解
Sep 14 Python
浅谈Python用QQ邮箱发送邮件时授权码的问题
Jan 29 Python
Python面向对象class类属性及子类用法分析
Feb 02 Python
python3+PyQt5实现拖放功能
Apr 24 Python
python随机数分布random测试
Aug 27 Python
使用Bazel编译TensorBoard教程
Feb 15 Python
python实现梯度下降法
Mar 24 Python
解决django接口无法通过ip进行访问的问题
Mar 27 Python
宝塔面板成功部署Django项目流程(图文)
Jun 22 Python
Python连接mysql方法及常用参数
Sep 01 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获取百度收录、百度热词及百度快照的方法
2015/04/02 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
2019/12/02 PHP
3Z版基于jquery的图片复选框(asp.net+jquery)
2010/04/12 Javascript
dwz 如何去掉ajaxloading具体代码
2013/05/22 Javascript
jquery的相对父元素和相对文档定位示例代码
2013/08/02 Javascript
js导出txt示例代码
2014/01/14 Javascript
JS定义网页表单提交(submit)的方法
2015/03/20 Javascript
jquery动态增加删减表格行特效
2015/11/20 Javascript
深入理解jquery中的事件与动画
2016/05/24 Javascript
jQuery实现给input绑定回车事件的方法
2017/02/09 Javascript
JS自定义滚动条效果简单实现代码
2020/10/27 Javascript
基于js 本地存储(详解)
2017/08/16 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
2019/05/13 jQuery
js尾调用优化的实现
2019/05/23 Javascript
Vue基本指令实例图文讲解
2021/02/25 Vue.js
[49:21]2018DOTA2亚洲邀请赛3月30日 小组赛B组 Effect VS iG
2018/03/31 DOTA
教你用Python写安卓游戏外挂
2018/01/11 Python
查看django执行的sql语句及消耗时间的两种方法
2018/05/29 Python
python3.6使用pickle序列化class的方法
2018/10/22 Python
Python3实现的简单工资管理系统示例
2019/03/12 Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
2020/02/25 Python
python使用nibabel和sitk读取保存nii.gz文件实例
2020/07/01 Python
Python爬虫过程解析之多线程获取小米应用商店数据
2020/11/14 Python
一款纯css3实现的鼠标悬停动画按钮
2014/12/29 HTML / CSS
基于 HTML5 Canvas实现 的交互式地铁线路图
2018/03/05 HTML / CSS
英国老牌潮鞋店:Offspring
2019/08/19 全球购物
抽象类和接口的区别
2012/09/19 面试题
医院后勤自我鉴定
2013/10/13 职场文书
蔬菜基地的创业计划书
2014/01/06 职场文书
运动会获奖感言
2014/02/11 职场文书
中学生操行评语大全
2014/04/24 职场文书
2014年幼儿园安全工作总结
2014/11/10 职场文书
2014年体育工作总结
2014/11/24 职场文书
初中语文教学研修日志
2015/11/13 职场文书
怎么禁用Win11输入法 最新Win11输入法关闭教程
2022/08/05 数码科技