用mplfinance库定制A股常用的K线、均线图
转载:https://blog.csdn.net/qq_41437512/article/details/105319421
安装`mplfinance`库(Windows 10)
导入
示例代码
总结
推荐阅读
近日需要使用 matplotlib的 finance库来绘制K线图及均线,但是 finance库已经停止更新了,查询后得知 finance库已经从 matplotlib中独立出来,新库名为 mpl_finance,但此库在使用中会出现弃用警告,查询官方文档后得知由一个更新的 mplfinance库替代(注意中间没有下划线或横线!)。更新后的 mplfinance库较以往更加简单易用,增加了很多新功能(renko砖形图、volume柱形图、ohlc图等),且支持多种风格,可定制多种颜色(因为国外K线图颜色与国内相反,容易产生误导),线条(默认线条较粗,影响观感)等。鉴于目前介绍 mplfinance库的中文文档匮乏,下面介绍相关用法,以供参考。
官方文档及项目的GitHub地址:
pypi主页
GitHub项目地址
项目源码、官方文档及示例ipynb文件(已上传至百度云,方便下载,提取码:481m)
安装mplfinance库(Windows 10)
安装mplfinance库要求pandas和matplotlib
pip install mplfinance --upgrade --user -i https://pypi.tuna.tsinghua.edu.cn/simple
1
导入
import mplfinance as mpf
1
废话不多说,直接上代码。。
示例代码
import mplfinance as mpf
import matplotlib as mpl# 用于设置曲线参数
from cycler import cycler# 用于定制线条颜色
import pandas as pd# 导入DataFrame数据
import matplotlib.pyplot as plt
def import_csv(stock_code):
# 导入股票数据
df = pd.read_csv(stock_code + '.csv')
# 格式化列名,用于之后的绘制
df.rename(
columns={
'date': 'Date', 'open': 'Open',
'high': 'High', 'low': 'Low',
'close': 'Close', 'volume': 'Volume'},
inplace=True)
# 转换为日期格式
df['Date'] = pd.to_datetime(df['Date'])
# 将日期列作为行索引
df.set_index(['Date'], inplace=True)
return df
# 导入数据
symbol = 'sh600519'
period = 100
df = import_csv(symbol)[-period:]
# 设置基本参数
# type:绘制图形的类型,有candle, renko, ohlc, line等
# 此处选择candle,即K线图
# mav(moving average):均线类型,此处设置7,30,60日线
# volume:布尔类型,设置是否显示成交量,默认False
# title:设置标题
# y_label:设置纵轴主标题
# y_label_lower:设置成交量图一栏的标题
# figratio:设置图形纵横比
# figscale:设置图形尺寸(数值越大图像质量越高)
kwargs = dict(
type='candle',
mav=(7, 30, 60),
volume=True,
title='\nA_stock %s candle_line' % (symbol),
ylabel='OHLC Candles',
ylabel_lower='Shares\nTraded Volume',
figratio=(15, 10),
figscale=5)
# 设置marketcolors
# up:设置K线线柱颜色,up意为收盘价大于等于开盘价
# down:与up相反,这样设置与国内K线颜色标准相符
# edge:K线线柱边缘颜色(i代表继承自up和down的颜色),下同。详见官方文档)
# wick:灯芯(上下影线)颜色
# volume:成交量直方图的颜色
# inherit:是否继承,选填
mc = mpf.make_marketcolors(
up='red',
down='green',
edge='i',
wick='i',
volume='in',
inherit=True)
# 设置图形风格
# gridaxis:设置网格线位置
# gridstyle:设置网格线线型
# y_on_right:设置y轴位置是否在右
s = mpf.make_mpf_style(
gridaxis='both',
gridstyle='-.',
y_on_right=False,
marketcolors=mc)
# 设置均线颜色,配色表可见下图
# 建议设置较深的颜色且与红色、绿色形成对比
# 此处设置七条均线的颜色,也可应用默认设置
mpl.rcParams['axes.prop_cycle'] = cycler(
color=['dodgerblue', 'deeppink',
'navy', 'teal', 'maroon', 'darkorange',
'indigo'])
# 设置线宽
mpl.rcParams['lines.linewidth'] = .5
# 图形绘制
# show_nontrading:是否显示非交易日,默认False
# savefig:导出图片,填写文件名及后缀
mpf.plot(df,
**kwargs,
style=s,
show_nontrading=False,
savefig='A_stock-%s %s_candle_line'
% (symbol, period) + '.jpg')
plt.show()
配色表图片引用自finthon.com/matplotlib-color-list/
总结
示例代码介绍了一些常用参数及配置,基本包含K线绘制的所有内容。图例等内容与matplotlib库使用方法相同,不作赘述。
了解更多请见网盘的example文件夹,包含官方的jupyter notebook详解。
本人第一次写csdn文章,若出现错误请多多包涵。如果有帮助就点个赞吧!
2020.4.9更新, 运行代码时不显示图像,在代码后加plt.show()即可(import matplotlib.pyplot as plt )。
推荐阅读
本人的其他有关文章,感兴趣的朋友可以看看。
Python绘制MACD指标图
Python绘制BOLL布林线指标图
Python绘制RSI相对强弱指标图