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

Mplfinance中'y_on_right'参数的正确使用方法是什么?

y_on_right参数不生效原因

y_on_right仅在未手动指定ax参数、由mplfinance自动管理子图布局时生效。你提前通过fig.add_subplot()创建了自定义坐标轴并传递给make_addplot,此时mplfinance不会修改你手动创建的坐标轴配置,因此该参数会被忽略。

解决方案

方案一:使用mplfinance原生panel布局(推荐)

放弃手动创建ax,通过mplfinance自带的panel参数管理多子图,此时y_on_right可正常生效:

# 不需要提前创建ax1~ax4,直接构造addplot对象
aps = [
    mpf.make_addplot(
        df['count_s'], 
        ylabel='Tweets',
        panel=1 # 放在第1个panel(主图默认是第0个panel)
    ),
    mpf.make_addplot(
        df['sentiment'], 
        type='bar',
        ylabel='Sentiment',            
        y_on_right=True, # 此时设置会生效
        panel=2 # 放在第2个panel
    )
]

# 调用plot时指定布局参数即可
mpf.plot(
    df,
    type='candle',
    panel_ratios=(2,1,1,1), # 四个panel的高度比例,对应你原来的5行1列布局效果
    volume=True, # 成交量默认放在最后一个panel,即第3个
    addplot = aps,
    xrotation = 0,
    datetime_format = '%b %d',
    axtitle = title,
    ylabel = 'Price ($USD)',
    tight_layout = True
)

方案二:保留手动创建ax的写法,直接修改坐标轴配置

如果需要保留自定义ax的逻辑,不需要使用y_on_right参数,直接通过matplotlib原生方法调整y轴位置即可,在调用mpf.plot()前添加以下代码:

# 将ax3的y轴刻度和标签都移到右侧
ax3.yaxis.tick_right()
ax3.yaxis.set_label_position("right")

内容的提问来源于stack exchange,提问作者cwfmoore

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 20:30:01