如何扩大matplotlib的子图?

3 投票
1 回答
2214 浏览
提问于 2025-04-16 02:12

我现在有两个子图。注意:这是在Mac OS X 10.6.x上使用matplotlib v0.99.3。

我有一个事件处理器,当点击其中一个子图时,它会打印一些东西。这只是一个临时的占位符。我想要的效果是,当点击子图时,它能占据整个图形(删除另一个子图,并最大化填满整个图形)。我该怎么做呢?

1 个回答

1

你可以通过修改 subplot 返回的坐标轴来实现这个功能。也就是说,坐标轴可以根据你的需求进行任意位置和大小的调整,而subplot只是一个返回均匀网格中坐标轴的函数;但是一旦你从subplot得到了这些坐标轴,你就可以随意调整它们的大小和位置。下面是一个例子:

from pylab import *

axes = [None, None]

def make():
    figure()
    axes[0] = subplot(1, 2, 1)
    axes[1] = subplot(1, 2, 2)
    show()

def re_form():
    xmax = axes[1].get_position().get_points()[1][0]
    axes[1].set_axis_off()
    (x0, y0), (x1, y1) = axes[0].get_position().get_points() # xmin, ymin, xmax, ymax
    axes[0].set_position([x0, y0, xmax-x0, y1-y0])  # x, y, width, height
    show()

在这里我使用了 show() 来更新图表,但你可能需要使用更合适的方式来处理你的事件。这个演示在iPython中运行:首先 run 这个文件,然后调用 make(),这会绘制两个坐标轴,接着调用 re_form(),这会移除第二个坐标轴并扩大第一个坐标轴的大小。

撰写回答