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

Joe*_*oel 3 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()
Run Code Online (Sandbox Code Playgroud)

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

Riv*_*ver 5

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

文档在这里:

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

使用Figure(figsize=(w,h))也有效.

对于Matplotlib 2.2.0和更新版本

forward=True对于所有三个的缺省set_figheight,set_figwidthset_size_inches(set_size_inches变化高度和宽度同时使用).

对于Matplotlib 1.5.0

forward=True必须明确指定,因为它是False默认情况下.(在Matplotlib 2.0.0,默认更改为True set_size_inches).

适用于Matplotlib 1.4.3及更早版本

forward仅受支持set_size_inches.

set_figheight并且set_figwidth不支持此参数,因此仅更改预先创建的GUI的单个维度有点困难.


Joe*_*oel 4

我不确定为什么这些记录的函数不起作用,但它们已在下一个 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()
Run Code Online (Sandbox Code Playgroud)