1

使用Mplfinance。我希望有人能澄清“y_on_right”参数的正确用法。我相信我正确使用了 mpf.make_addplot() 但它不会将 y 轴移动到图表的另一侧。使用提供的文档。TIA。

        mpf.make_addplot(
        df['sentiment'], 
        type='line',
        ax=ax3,
        y_on_right=True,         
        ylabel='Sentiment',
        color='#6f2d84'
        )]

编辑:添加代码的工作示例。

def makeCharts_CountsOHLC(self, props):

fig = props['fig']
df = props['df']
symbol = props['symbol']
start = props['min_date']
end = props['max_date']

# Configure the axes
ax1 = fig.add_subplot(5,1,(1,2))
ax2 = fig.add_subplot(5,1,3, sharex=ax1)
ax3 = fig.add_subplot(5,1,4, sharex=ax1)
ax4 = fig.add_subplot(5,1,5, sharex=ax1)

# Create add plots
aps = [
    mpf.make_addplot(
    df['count_s'], 
    ax=ax2, 
    ylabel='Tweets',
    ),
    
    mpf.make_addplot(
    df['sentiment'], 
    type='bar',
    ax=ax3,
    ylabel='Sentiment',            
    )]

ax1.tick_params(labelbottom=False)
ax2.tick_params(labelbottom=False)
ax3.tick_params(labelbottom=False)

# Functions to add a day to date and format dates 
date_p1 = lambda x: dt.strftime(pd.to_datetime(x) + td(days=1), '%d %b %y')
fmt_date = lambda x: dt.strftime(pd.to_datetime(x), '%d %b %y')

title = f'{symbol} Price and Volume Traded from {fmt_date(start)} until {date_p1(end)}'

# Plot the chart
mpf.plot(
    df,
    type='candle',
    ax = ax1,
    volume = ax4,
    addplot = aps,
    xrotation = 0,
    datetime_format = '%b %d',
    axtitle = title,
    ylabel = 'Price ($USD)',
    tight_layout = True
    )

# Format the prive of the y axis 
mkfunc = lambda x, pos: '%1.1fM' % (x * 1e-6) if x >= 1e6 else '%1.1fK' % (x * 1e-3) if x >= 1e3 else '%1.1f' % x
mkformatter = matplotlib.ticker.FuncFormatter(mkfunc)
ax1.yaxis.set_major_formatter(mkformatter)

# Adjustments to plot and save
plt.subplots_adjust(hspace=0)
plt.savefig(fname=props['save_path'], dpi=self.cconf.get('RESOLUTION'))
plt.close('all')
fig.clear()

在此处输入图像描述

4

3 回答 3

2

y_on_right轴模式不支持。

如果你想改变特定轴的方向,你可以直接这样做:

ax3.yaxis.set_label_position("right")
ax3.yaxis.tick_right() 
于 2021-08-14T10:36:45.087 回答
2

至于mplfinance中的y_on_right,默认为false,一直显示在右侧。这是为了在将移动平均线添加到烛台时使主轴向左,例如,当有两个轴时。例如,我绘制了一个与您的一只股票的输出类似的附加图。推文的数量是未知的,所以我用音量代替。要保存图形,请创建保存信息并将其包含在主图形代码中。

import mplfinance as mpf
import matplotlib.pyplot as plt
import yfinance as yf

symbol = "AAPL"
start, end = "2021-01-01", "2021-07-01"
data = yf.download("AAPL", start=start, end=end)

title = f'\n{symbol} Price and Volume Traded \nfrom {start} until {end}'

apds = [mpf.make_addplot(data.Volume, type='bar', panel=1, ylabel='Tweet', y_on_right=False),
        mpf.make_addplot(data.Close, type='line', mav=(20,50), panel=2, ylabel='EMA', y_on_right=True),
        mpf.make_addplot(data.Volume, type='bar', panel=3, ylabel='Volume', y_on_right=False)
       ]

save = dict(fname='test_mpl_save.jpg',dpi=150, pad_inches=0.25)
mpf.plot(data, 
         type='candle', 
         addplot=apds, 
         volume=False,
         ylabel='Price ($USD)',
         style='starsandstripes',
         title=title, datetime_format=' %a %d',
         #savefig=save
        ) 

在此处输入图像描述

于 2021-08-14T13:20:34.267 回答
2

y_on_right是在外轴模式下不可用的几个 mplfinance 功能之一。

您可以在此处查看代码。由于各种原因,在外部轴模式下,某些功能必然不可用,但主要是所有这些都以某种方式与 mplfinance 在外部轴模式下无法完全控制轴的事实有关。

虽然 mplfinance 确实会在您尝试在外部轴模式下使用某些功能时发出警告,但要确保代码包含在外部轴模式下无法支持的所有此类功能的警告是乏味且困难的。希望将来,如果您尝试在外轴模式下使用这些功能,所有这些功能都将包含警告。

同时,请注意mplfinance文档强烈反对使用外部轴模式,除非您尝试完成无法以任何其他方式完成的事情。

作为记录,截至撰写本文时,此处页面上发布的所有情节图像都是 mplfinance无需求助于外部轴模式即可完成的类型。

全面披露:我是mplfinance 包的维护者

PS如果您确实选择使用外部轴模式,那么@Mohammad 的答案是正确的方法。

PPS 我已经开始记录外部轴模式不支持的功能列表

于 2021-08-15T02:43:03.200 回答