You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

mplfinance设置show_nontrading=False图表异常及轴配置问题

解决mplfinance中RSI子图配置与MACD图例位置问题

一、配置RSI子图Y轴范围及水平线

要将RSI子图Y轴固定在0-100区间,并添加30(超卖线)、70(超买线)水平线,可按以下步骤操作:

  1. 计算RSI指标后,创建RSI的addplot对象时,通过yaxis_kwargs参数指定Y轴范围;
  2. 生成两个与数据长度一致的常量序列(值为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 19:43:25