mplfinance设置show_nontrading=False图表异常及轴配置问题
解决mplfinance中RSI子图配置与MACD图例位置问题
一、配置RSI子图Y轴范围及水平线
要将RSI子图Y轴固定在0-100区间,并添加30(超卖线)、70(超买线)水平线,可按以下步骤操作:
- 计算RSI指标后,创建RSI的addplot对象时,通过
yaxis_kwargs参数指定Y轴范围; - 生成两个与数据长度一致的常量序列(值为30和70),作为水平线的addplot添加到同一RSI子图。
二、指定MACD图例位置
在调用mpf.plot()时,通过legend_loc参数直接设置图例的显示位置,支持upper left、upper right、lower left、lower right等常用位置。
完整代码示例
import mplfinance as mpf import pandas as pd import talib # 假设已加载包含Open/High/Low/Close/Volume的DataFrame df # 计算技术指标 df['RSI'] = talib.RSI(df['Close'], timeperiod=14) df['MACD'], df['MACD_Signal'], df['MACD_Hist'] = talib.MACD(df['Close'], fastperiod=12, slowperiod=26, signalperiod=9) # 配置RSI子图及水平线 rsi_plot = mpf.make_addplot(df['RSI'], panel=1, ylabel='RSI', yaxis_kwargs={'ylim': (0, 100)}) hline_30 = mpf.make_addplot([30]*len(df), panel=1, color='gray', linestyle='--', linewidth=1) hline_70 = mpf.make_addplot([70]*len(df), panel=1, color='gray', linestyle='--', linewidth=1) # 配置MACD子图(指定图例标签) macd_line = mpf.make_addplot(df['MACD'], panel=2, ylabel='MACD', label='MACD') macd_signal = mpf.make_addplot(df['MACD_Signal'], panel=2, label='Signal') macd_hist = mpf.make_addplot(df['MACD_Hist'], panel=2, type='bar', label='Hist') # 整合所有子图并绘制 plots = [rsi_plot, hline_30, hline_70, macd_line, macd_signal, macd_hist] mpf.plot(df, type='candle', volume=True, show_nontrading=False, addplot=plots, legend_loc='upper right', figratio=(16,9))
关键参数说明
yaxis_kwargs={'ylim': (0, 100)}:强制RSI子图Y轴范围锁定在0到100;legend_loc:控制MACD图例的显示位置,可根据图表布局调整为合适的位置;- 水平线通过常量序列生成,与RSI子图共用
panel=1,确保显示在同一区域。
内容的提问来源于stack exchange,提问作者Agustin Amador Ehrman
相关产品推荐
相关产品推荐

