前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用 pandas + matplotlib 绘制精美的K线图

用 pandas + matplotlib 绘制精美的K线图

作者头像
刘早起
发布2022-09-21 10:51:38
2.1K0
发布2022-09-21 10:51:38
举报
文章被收录于专栏:早起Python早起Python

大家好,我是早起。

在使用 Python 进行金融数据分析时,绘制 K线图 是很常见的需求。

但如果使用 matplotlib 从 0 开始绘制,一步一步添加日线、均线、MACD、成交量等指标时,则会显得十分麻烦,且代码很难复用。

幸运的是在 matplotlib 中提供接口(matplotlib.finance)直接绘制K线,现在 matplotlib.finance 已经独立成库 mplfinance,更方便的让我们使用。

本文就将介绍如何使用 mplfinance 快速绘制专业的K线图,文末也有完整的数据与源码下载。

01

安装与数据准备

上面已经说到,mplfinance 是一个独立的库,所以直接使用 pip 安装即可,没有任何难度

代码语言:javascript
复制
pip install mplfinance

至于在数据准备上,根据我的开发经验,越懒人版的绘图库对数据要求则越严格,所以在使用之前,我们需要将数据整理成指定的格式,下面是某股票(平安银行000001.sz)的对应数据

如上图所示,数据必须是Pandas DataFrame格式,且必须按照顺序包含开盘价、最高价、最低价、收盘价以及成交量,同时索引需要是pandas支持的时间类型。

关于如何获得、清洗得到这样的数据将不是本文的分享内容,下面仅介绍如何基于这样的数据进行绘图。

02

mplfinance常见用法

基础使用

首先需要导入

代码语言:javascript
复制
import mplfinance as mpf

接下来,在上述数据基础上一行代码即可生成简易价格走势图

代码语言:javascript
复制
mpf.plot(df_new, type='line')

添加移动均线

通过设置 mav 参数可以添加对应的移动均线,例如添加5日、10日、30日移动均线

代码语言:javascript
复制
mpf.plot(df_new, type='line',mav=(5,10,30))

需要注意的是,这里的x日移动均线并不是通过我们数据的时间索引计算而来,仅是移动x个索引位置而来,由于我们数据时间精度为1天,所以恰好是对应的x天移动均线。

如果索引是分钟级数据,那么设置 mav 得到的就是x分钟均线!

添加成交量

通过设置 volume 参数,可以进一步添加成交量

代码语言:javascript
复制
mpf.plot(df_new, type='line',mav=(5,10,30), volume=True)

制作蜡烛图

通过设置 type 参数可以绘制更专业的蜡烛图,由于上面的数据时间维度过长,绘制蜡烛图会导致很难看清细节。

所以下面绘制最后 40 个交易日的蜡烛图,并添加成交量与 3、6、9 日均线

代码语言:javascript
复制
mpf.plot(df_new.tail(40), type='candle',mav=(3,6,9), volume=True)

展示非交易时间

上面的图是连续的,但交易日并不是天天都是,每天也有指定时间,通过设置 show_nontrading 参数,可以按照交易时间绘制,将非交易时间添加为空白

代码语言:javascript
复制
mpf.plot(df_new,type='candle',mav = (3),show_nontrading=True, volume=True)

至此 mplfinance 的基本使用就介绍完毕,相比来说还是比较容易上手使用的。

彩蛋 - pyecharts

虽然 matplotlib 也可以绘制动态图,详见我的这篇文章,但是由于 matplotlib 的特性,展示起来并不是很方便。

如果需要能交互式操作数据,拖动时间轴等功能,可以尝试使用 pyecharts,但由于不像 mplfinance 封装好开箱即用,代码写起来还是需要相当一定时间的,大家可以自行选择

03

数据与源码下载

本文选自 「Pandas进阶修炼300题」第八章【金融数据与事件处理】第 3 小节

所以全部的源码与数据当然是包含在pandas300题中啦,点击下方图片即可查看具体的下载方式~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 早起Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基础使用
  • 添加移动均线
  • 添加成交量
  • 制作蜡烛图
  • 展示非交易时间
  • 彩蛋 - pyecharts
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档