使用set_fig(宽度/高度)调整matplotlib图形的大小不起作用

时间:2015-08-05 19:32:12

标签: python matplotlib

出于某种原因,这段代码创建的图形只是标准尺寸:它不会改变高度或宽度(我选择宽度和高度是荒谬的,以清楚地说明问题):

import matplotlib.pyplot as plt

fig = plt.figure()
fig.set_figwidth(30)
fig.set_figheight(1)

print('Width: {}'.format(fig.get_figwidth()))

plt.show()

我在OSX 10.10.4,Python 3.4.3,Matplotlib 1.4.3上运行。 (通过Macports安装。)任何想法?我错过了什么?

2 个答案:

答案 0 :(得分:5)

可选参数click将更改传播到已存在的GUI窗口中的画布

Documentation here:

  

可选的kwarg forward将导致画布大小自动更新;例如,您可以从shell重新调整图形窗口

使用forward=True也可以。

对于Matplotlib 2.2.0及更新版

Figure(figsize=(w,h))是所有三个set_figheightset_figwidthset_size_inchesforward=True同时更改高度和宽度)的默认值。

对于Matplotlib 1.5.0

默认情况下,必须明确指定

set_size_inches,因为它是forward=True。 (在Matplotlib 2.0.0中,False的默认值仅更改为True

对于Matplotlib 1.4.3及更早版本

set_size_inches仅受forward支持。

set_figheightset_figwidth不支持此参数,因此仅更改预先创建的GUI的单个维度有点困难。

答案 1 :(得分:3)

我不确定为什么那些documented functions不起作用,但they have been fixed用于下一个matplotlib版本(> v1.4.3)。作为下一版本的解决方法,替换set_figwidthset_figheight可以解决此问题。

import matplotlib.pyplot as plt

fig = plt.figure()
# Instead of set_figwidth(30)
fig.set_size_inches(30, fig.get_figheight(), forward=True)

plt.show()