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
相关产品推荐
相关产品推荐

