如何在 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.
在
旧图表:
新图表:
我想将其调整为之前的大小。我尝试将以下内容添加到 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.