【问题标题】:How do I set the resize-behaviour of subplots?如何设置子图的调整大小行为?
【发布时间】:2014-06-29 12:44:18
【问题描述】:

我正在一个窗口中处理几个子图。绘制后看起来很棒,问题是当我手动调整窗口时。子图无法正确适应新的窗口大小。我该如何解决?

绘图后的窗口,看起来很棒:

手动调整大小后的窗口看起来很糟糕:

编辑:

一个简单的演示代码:

from matplotlib.pyplot import *

figure(figsize=(24,6))

subplot(131)
ylabel("test")
plot([1,2,3], label="test1")
plot([3,2,1], label="test2")

subplot(132)
ylabel("test")
plot([1,2,3], label="test1")
plot([3,2,1], label="test2")


subplot(133)
ylabel("test")
plot([1,2,3], label="test1")
plot([3,2,1], label="test2")

tight_layout()
show()

如您所见,情节在绘制后看起来不错。但是当你开始水平缩小情节时,情节和情节之间的空间变得越来越小。最后,刻度标签在其他图上,因为它们没有空间。我需要知道如何设置整个情节变小,为标签留出空间。

【问题讨论】:

  • 请提供重复情况的代码。
  • 该代码由 4 个文件组成......在这里发布它很复杂。在接下来的几个小时里,我将发布一个同样问题的更简单的代码......
  • 好吧,贴一个演示代码,我想它说明了我的问题
  • 看起来像调整大小 + 纵横比的问题。当你使窗口变窄时,它也会变短。
  • 尝试在交互模式下运行它,然后每次调整大小并且对它不满意时,可以使用tight_layout() 正确重新定位标签。不是真正的解决方案,但有效。

标签: matplotlib resize subplot


【解决方案1】:

也许不完全是我问题的答案,但它解决了我的问题:

创建图形后,将调整大小事件连接到事件处理程序:
cid = fig.canvas.mpl_connect('resize_event', onresize)

def onresize(event):
    plt.tight_layout()

正如 Wicket 所说,我只是一次又一次地打电话给tight_layout(),但都是自动的。

【讨论】:

  • 天哪!这是黄金!谢谢!
猜你喜欢
  • 2017-06-08
  • 2020-12-25
  • 1970-01-01
  • 1970-01-01
  • 2022-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多