gpt4 book ai didi

python - 如何让图表填满所有窗口

转载 作者:行者123 更新时间:2023-11-28 19:56:10 25 4
gpt4 key购买 nike

我正在用 QtDesigner 创建的应用程序中绘制图形,问题是,当显示图形时,图形空间和 mplwidget 空间之间出现一个大的“灰色边缘”。这会使绘图变小,那么当我在主窗口中显示图表时,我该如何删除出现的这个大“灰色边框”呢??

我希望我的图形能够填充小部件的所有可用空间。 graph showed in my application

最佳答案

简短的回答是:“使用 fig.tight_layout()。”

不过,让我对正在发生的事情做更多的解释。

您将看到图形和轴之间的交互。

Figure 包含一个或多个Axes(图/子图/等)。一切都绘制在图形的 Canvas 上(基本上,特定于后端的像素缓冲区或矢量页面)。


制作坐标轴时,它不会填满整个图形。

默认情况下,单个坐标轴的左下角是图形宽度的 12.5% 和高度的 10%,坐标轴占图形宽度和高度的 90%图。 (不对称是为了给左边的刻度标签留出空间。)

你设置的位置就是下图中白框的范围。它不包括刻度标签、标题、轴标签等(这就是轴没有填满整个图的原因)。

默认情况下是这样的: enter image description here

旁注:为了保持代码简短,我将使用pyplot 接口(interface)自动生成FigureAxes,和 Canvas,而您可能会明确地创建每一个以与您的 gui 框架一起工作。但结果是一样的。

每个轴实例所占图形的百分比是在创建时设置的。您可以明确指定它:

fig = plt.figure()
ax = fig.add_axes([left, bottom, width, height])

或者使用子图网格,可以更容易地通过 fig.subplots_adjust 进行调整:

fig, axes = plt.subplots(nrows=2, ncols=2)
# Expand the grid of subplots out (Notice that
fig.subplots_adjust(left=0.05, bottom=0.05, right=0.98, top=0.98)

tight_layout 所做的是计算刻度标签、标题、轴标签等的范围,并确定 fig.subplots_adjust 的参数,这样一切都只是勉强图中。 (请记住,subplots_adjust 和轴位置规范控制“白框”的范围——实际轴本身——并且不包括刻度标签等)

所以,如果我们像以前那样做:

fig, ax = plt.subplots()

然后调用:

fig.tight_layout()

我们会得到一些“边界”较少的东西,因为轴将占据图形的较大百分比:

enter image description here

如果您想控制“边框”的颜色,请使用 fig.set_facecolor(color)(或 fig.patch.set_facecolor)。

关于python - 如何让图表填满所有窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20907078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com