matplotlib 布局紧凑,带有绘图和 Slider 对象
matplotlib tight layout with plots and Slider object
我正在尝试编写一个数据分析工具,该工具由一个 matplotlib window 绘制两个图表,一个在另一个上方,一个滑动条与其中一个图进行交互。
在目前的状态下,看起来是这样的:
我的问题是我想尽可能多地使用 window 中可用的 space 因此我在绘制之前调用 tight_layout()
但滑块对象是没有移动到图表下方,它停留在我首先使用以下方法绘制的位置:
axamp = plt.axes([0.1, 0, 0.8, 0.03], axisbg=axcolor)
samp = Slider(axamp, 'Amp', 0.1, 10.0, valinit=a0)
有没有办法让它仍然使用 tight_layout()
移动到图表下方,而不必手动为 window 中的所有对象提供 canvas 位置?
我没弄明白 tight_layout()
,但你可以玩 subplots_adjust()
。经过一些手动调整后,它将带您到达那里。
重点是将 bottom
参数设置得足够高,这样您的所有滑块都适合子图。使用 left
、right
、top
,您可以设置边距,以便您的子图可以根据需要填充 space。通过使用 wspace
和 hspace
,您可以设置在各个子图之间使用多少 space。
fig, axes = plt.subplots(4, 4, figsize=(9,10))
fig.subplots_adjust(left=0.05, bottom=0.15, right=0.95, top=0.98, wspace=0.05, hspace=0.05)
如果您的子图包含 imshow
,那么 figsize
也会起作用,因为 aspect
参数的默认值是 None
,这确保了像素是正方形。因此,如果您不介意拉伸图像,请使用 figsize
或设置 aspect='auto'
。
我正在尝试编写一个数据分析工具,该工具由一个 matplotlib window 绘制两个图表,一个在另一个上方,一个滑动条与其中一个图进行交互。
在目前的状态下,看起来是这样的:
我的问题是我想尽可能多地使用 window 中可用的 space 因此我在绘制之前调用 tight_layout()
但滑块对象是没有移动到图表下方,它停留在我首先使用以下方法绘制的位置:
axamp = plt.axes([0.1, 0, 0.8, 0.03], axisbg=axcolor)
samp = Slider(axamp, 'Amp', 0.1, 10.0, valinit=a0)
有没有办法让它仍然使用 tight_layout()
移动到图表下方,而不必手动为 window 中的所有对象提供 canvas 位置?
我没弄明白 tight_layout()
,但你可以玩 subplots_adjust()
。经过一些手动调整后,它将带您到达那里。
重点是将 bottom
参数设置得足够高,这样您的所有滑块都适合子图。使用 left
、right
、top
,您可以设置边距,以便您的子图可以根据需要填充 space。通过使用 wspace
和 hspace
,您可以设置在各个子图之间使用多少 space。
fig, axes = plt.subplots(4, 4, figsize=(9,10))
fig.subplots_adjust(left=0.05, bottom=0.15, right=0.95, top=0.98, wspace=0.05, hspace=0.05)
如果您的子图包含 imshow
,那么 figsize
也会起作用,因为 aspect
参数的默认值是 None
,这确保了像素是正方形。因此,如果您不介意拉伸图像,请使用 figsize
或设置 aspect='auto'
。