如何在 Tkinter 中缩放 mplfinance 图表?

How do I scale mplfinance graph within Tkinter?

的帮助下,我成功地将我的图表变成了烛台图表。但是我似乎无法调整它的大小。

旧图表:

新图表:

我想将其调整为之前的大小。我尝试将以下内容添加到 rcparams 但没有效果:

"figure.figsize": figure_size,
"savefig.bbox": "tight"

我的旧相关代码:

figure = plt.Figure(figsize=(0.7 * res_width / 100, 0.45 * res_height / 100), facecolor=BACKGROUND_COLOUR)
ax = figure.add_subplot(111, fc=BACKGROUND_COLOUR)
figure.tight_layout()
figure.subplots_adjust(left=0.05, right=1.0, bottom=0.0, top=1.0)
FigureCanvasTkAgg(figure, self).get_tk_widget().place(relx=0.02, rely=0.27)

我当前的代码:

market_colours = mpf.make_marketcolors(up="g", down="r",
                                           edge=background_colour,
                                           wick=line_colour)

style_dict = {"xtick.color": line_colour,
                  "ytick.color": line_colour,
                  "xtick.labelcolor": text_colour,
                  "ytick.labelcolor": text_colour,
                  "axes.spines.top": False,
                  "axes.spines.right": False,
                  "axes.labelcolor": text_colour}

style = mpf.make_mpf_style(marketcolors=market_colours,
                               facecolor=background_colour,
                               edgecolor=line_colour,
                               figcolor=background_colour,
                               gridcolor=line_colour,
                               gridstyle="--",
                               rc=style_dict)

figure, ax = mpf.plot(df, type="candle", returnfig=True, style=style, TEXT_COLOUR))
FigureCanvasTkAgg(figure, self).get_tk_widget().place(relx=0.02, rely=0.27)

在小部件上尝试 .pack(expand=True) 时它也不起作用。

编辑: 多亏了 Goldfarb 先生,我把图表变大了,但它仍然不合适。有没有一种方法可以将 figure.tight_layout() 与我通常添加的 figure.subplots_adjust(left=0.05, right=1.0, bottom=0.0, top=1.0) 一起应用?

您可以在调用 mpf.plot() 时使用 kwarg figsize=(width,height) 调整图形大小。而不是:

figure, ax = mpf.plot(df, type="candle", returnfig=True, style=style, TEXT_COLOUR)

尝试

figure, ax = mpf.plot(df, type="candle", returnfig=True, style=style, TEXT_COLOUR,
                      figsize=(0.7*res_width/100, 0.45*res_height/100) )

关于 Figure.tight_layout()Figure.subplots_adjust() ... mplfinance 使用 matplotlib 的 Figure.add_axes() 来创建 Axes 对象,显然,尽管 add_axes() 是 matplotlib 的一部分,但 Axes 是由 add_axes() 创建,与 matplotlib 的 tight_layout 不兼容。我不知道 subplots_adjust() 是否也有效(因为我从未尝试过)。

也就是说,mplfinance 实现了它自己的 tight_layout。只需在调用 mpf.plot() 时设置 kwarg tight_layout=True。先尝试一下,但如果这不能满足您要完成的目标,请尝试使用 the scale_padding kwarg.