mplfinance模块新版功能plot的关键字参数(v=0.12.6a3)(五)
mplfinance模块新版功能plot的关键字参数(v=0.12.6a3)(五)
续:
mplfinance详解(一)
mplfinance详解(二)
mplfinance详解(三)
mplfinance详解(四)
续五 — 新增plot的关键字参数
- 一、x轴刻度旋转 - xrotation
- 二、设置x轴刻度日期格式 datetime_format
- 三、紧密布局:tight_layout
- 四、 填充颜色 fill_between
- 1、fill_between的基础用法
- 2、设置填充颜色等
- 3、设置填充颜色的Y轴区间
- 4、设置填充颜色的X轴区间
一、x轴刻度旋转 - xrotation
话不多说,依然使用之前的数据,代码如下:
class DataFinanceDraw(object):
"""
获取数据,并按照 mplfinanace 需求的格式格式化,然后绘图
"""
def __init__(self):
self.data = pandas.DataFrame()
def my_data(self, file_name='2020.csv'):
"""
获取数据,把数据格式化成mplfinance的标准格式
:return:
"""
data = pandas.read_csv(os.getcwd() + '\\resource\\' + file_name)
data['Date'] = pandas.to_datetime(data['Date'], format='%Y-%m-%d')
data.set_index('Date', inplace=True)
self.data = data
return data
def panel_draw(self):
"""
make_addplot 绘制多个子图
"""
data = self.data.iloc[0:50]
mplfinance.plot(data, type='candle',
mav=(2, 5),
volume=True,
figscale=1.5,
xrotation=15,
title='Candle', ylabel='price', ylabel_lower='volume',
)
plt.show() # 显示
plt.close() # 关闭plt,释放内存
if __name__ == "__main__":
candle = DataFinanceDraw()
candle.my_data('2020.csv')
candle.panel_draw()
x轴刻度旋转15度,其他角度自己调试,输入结果:

二、设置x轴刻度日期格式 datetime_format
上面的代码修改如下:
mplfinance.plot(data, type='candle',
mav=(2, 5),
volume=True,
figscale=1.5,
xrotation=15,
datetime_format='%Y-%m-%d',
title='Candle', ylabel='price', ylabel_lower='volume',
)
注意,是修改x轴日期格式,如果x轴不是日期格式,那么这个就不要用了,输出结果:


三、紧密布局:tight_layout
mplfinance.plot(data, type='candle',
mav=(2, 5),
volume=True,
figscale=1.5,
xrotation=15,
datetime_format='%Y-%m-%d',
tight_layout=True,
title='Candle', ylabel='price', ylabel_lower='volume',
)
增加紧密布局 tight_layout=True 后,不仅仅是整个画布布局紧凑了,标题已经到了图表内部,主要的是图表的左右两侧没有之前的空白了,跟平时交易软件的风格相同。

四、 填充颜色 fill_between
1、fill_between的基础用法
使用关键字fill_between直接赋值一个与x轴数据长度相同的数据(比如收盘价close),那么plot就会以从x轴想上填充颜色到收盘价的高度。
mplfinance.plot(data, type='candle',
mav=(2, 5),
volume=True,
figscale=1.5,
xrotation=15,
datetime_format='%Y-%m-%d',
tight_layout=True,
fill_between=data['Close'].values,
title='Candle', ylabel='price', ylabel_lower='volume',
)

2、设置填充颜色等
关键字fill_between也可以i使用字典传参,比如增加填充颜色和透明度,字典传参的时候注意关键字y1是必填的,否则会报错。
mplfinance.plot(data, type='candle',
mav=(2, 5),
volume=True,
figscale=1.5,
xrotation=15,
datetime_format='%Y-%m-%d',
tight_layout=True,
fill_between=dict(y1=data['Close'].values, alpha=0.5, color='g'),
title='Candle', ylabel='price', ylabel_lower='volume',
)

3、设置填充颜色的Y轴区间
设置填充颜色的空间或者说Y轴区间需要使用两个关键字参数y1和y2传递给fill_between:
mplfinance.plot(data, type='candle',
mav=(2, 5),
volume=True,
figscale=1.5,
xrotation=15,
datetime_format='%Y-%m-%d',
tight_layout=True,
fill_between=dict(y1=125, y2=data['Close'].values, alpha=0.5, color='g'), # 方式1
# fill_between=dict(y1=data['Open'].values, y2=data['Close'].values), # 方式2
# fill_between=dict(y1=125, y2=132, alpha=0.5, color='g'), # 方式3
title='Candle', ylabel='price', ylabel_lower='volume',
)
使用y1和y3传参时可以使用固定数值,也可以使用动态数据,上面代码中三种方式分别输出结果如下:



4、设置填充颜色的X轴区间
这里注意,设置y轴填充区间用y1和y2,填充x轴区间可不是x1和x2,这样会报错没有x1和x2这个关键字参数,设置x轴区间稍微有点麻烦,使用关键字参数where,where是一个与x轴数据长度相同的一组可迭代数据的布尔值,要使用x轴区间限制,需要增加并修改如下代码,
# 增加计算的代码,用来确定x轴方向的时间范围
dates_df = pandas.DataFrame(data.index)
buy_date = pandas.Timestamp('2011-08-08')
sell_date = pandas.Timestamp('2011-08-30')
where_values = pandas.notnull(dates_df[(dates_df >= buy_date) & (dates_df <= sell_date)])['Date'].values
#
mplfinance.plot(data, type='candle',
mav=(2, 5),
volume=True,
figscale=1.5,
xrotation=15,
datetime_format='%Y-%m-%d',
tight_layout=True,
fill_between=dict(y1=y1values, y2=y2value, where=where_values, alpha=0.5),
title='Candle', ylabel='price', ylabel_lower='volume',
)
通过上面的代码使用where限制了x轴填充的范围在2011-08-08至2011-08-30之间,而上面如果输出计算后的where_values,可以是数据格式是:[False False False True True True … False False] ,数据类型type是 nampy.ndarray, 当然强制转换为列表或者元组都不影响效果。

