1

首先必须说,我喜欢 mplfinance,它是一种在图表上显示数据的非常好的方式。

我现在的问题是,我不能减少边界的空间。有一个名为“tight_layout”的参数,但它会切断信息。可能我做错了什么。

mpf.plot(df_history, show_nontrading=True, figratio=(10,7), figscale=1.5, datetime_format='%d.%m.%y', 
         xrotation=90, tight_layout=True,  
         alines=dict(alines=seq_of_points, colors=seq_of_colors, linestyle='-', linewidths=0.5),
         type='candle', savefig=bildpfad, addplot=apdict, 
         update_width_config=dict(candle_linewidth=0.4))

当我使用tight_layout=True时,它看起来像这样: 在此处输入图像描述 图表周围的空间是完美的,但图表中的数据被切断了。

如果我使用tight_layout=False它会占用太多空间,并且创建的 html 文件看起来很弯曲。 在此处输入图像描述

有人知道正确的方法吗?

4

1 回答 1

0

你可以做一些不同的事情来解决这个问题。首先,了解发生这种情况的原因。该tight_layout算法将 x 轴限制设置为刚好超出数据框日期时间索引的限制,而您的某些alines点显然超出了此范围。鉴于此,您可以做一些事情:

  • 使用 kwargxlim=(xmin,xmax)手动设置所需的 x 轴限制。
  • 在你的 ohlc 数据框的末尾填充nan你在你的情节上需要的最新日期的值。
  • tight_layout请求应考虑的错误修复或增强alines

HTH。


PS 目前xlim仅接受与数据框中的行号相对应的数字(int 或 float)(或与 matplotlib 日期相对应的数字,请参阅下面的 PPS)。我希望尽快提高xlim接受日期。与此同时,尝试这样的事情:

xmin = 0
xmax = len(df_history)*1.4
mpf.plot(df_history,...,xlim=(xmin,xmax))

PPS 我刚刚意识到上述 ( xmax = len(df_history)*1.4) 仅适用于show_nontrading=False. 但是,show_nontrading=True有了它,您需要以不同的方式设置 xmax 和 xmin,如下所示:

import matplotlib.dates as mdates
...

# decide how many days past the end of the data 
# that you want the maximum x-axis limit to be:
numdays = 10
# then:
xmin = mdates.date2num(df_history.index[0].to_py_datetime())
xmax = mdates.date2num(df_history.index[-1].to_py_datetime()) + numdays
mpf.plot(df_history,...,xlim=(xmin,xmax))

(注意上面它们不是两者.index[0],但 xmax 来自.index[-1]


我很抱歉,上述解决方法xlim很详尽。这更加激励我完成xlim增强功能,以便用户可以将日期作为字符串或日期时间传递。mplfinance 的用户不必担心这些日期转换细节。

于 2021-03-14T14:04:22.517 回答