使用Matplotlib轻松绘制股票K线图

K线图是看懂股票走势的最基本知识,K线分为阴线和阳线,阴线和阳线都包含了最低价、开盘价、最高价和收盘价,一般都K线如下图所示:

度娘说:K线图源于日本德川幕府时代(1603~1867年),被当时日本米市的商人用来记录米市的行情与价格波动,后因其细腻独到的标画方式而被引入到股市及期货市场。通过K线图,我们能够把每日或某一周期的市况现完全记录下来,股价经过一段时间的盘档后,在图上即形成一种特殊区域或形态,不同的形态显示出不同意义。

在使用Python进行股票分析的过程中,我们可以很容易的对K线图进行绘制,下面介绍两种情形下的K线图绘制:

一、股票数据来源于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线图如下:

二、股票数据来源于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线图:

嗯,是不是很简单?

原文发布于微信公众号 - 州的先生(zmister2016)

原文发表时间:2016-12-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏C语言及其他语言

[游戏源码]C语言版五子棋游戏(VC6.0实现)

今天给大家分享一个C语言实现的五子棋游戏,来自咱们C语言网哦! C语言实现五子棋游戏,编译运行后如图 上下左右移动光标位置,空格为下子,黑白交替,可以自娱自乐~...

7559
来自专栏程序员互动联盟

【面试宝典】Java之线程一如何开启线程

面试官:大四是吧? 小白:是的,学校大四没有课,只有毕业设计,就想着提前出来锻炼锻炼。 面试官:想法很好,那咱们开始吧,知道线程吧! 小白:嗯,线程是CPU执行...

32611
来自专栏云端漫步

go设计模式之抽象工厂

在上一篇文章中,通过手机的例子对工厂方法进行了展开。制造商不单单只生产手机这一种产品,同时也生产pc,如果工厂扩展其它业务,工厂方法模式就不适用了。为了实现工厂...

1030
来自专栏逍遥剑客的游戏开发

从Native到Web(三), NaCl学习笔记: 3D渲染(DX9迁移到GLES)

1082
来自专栏Android群英传

我与 Kotlin 的爱恨情仇之浅谈 block

884
来自专栏数据结构与算法

2017 清北学堂 Day 6终极考试报告

预计分数: 100+70+70 = 240 实际假分数 : 40+80+70= 190  in cena(好吧不得不承认这个分数,,,,,,=.=) 实际真分数...

3073
来自专栏java一日一条

关于 Java 的10个谎言

下面的这些都算是比较高级的问题了,面试中一般也很少问到,因为它们可能会把面试者拒之门外。不过你可以自己找个时间来实践一下。

551
来自专栏java工会

一分钟搞明白java8中的lambda|文末红包

2105
来自专栏Java3y

给女朋友讲解什么是代理模式

2485
来自专栏python百例

83-OOP基础

为玩具厂创建一个玩具熊类。 玩具熊有名字、尺寸、颜色这些数据属性;还有唱歌、说话的行为。

955

扫码关注云+社区