我以前使用过以下内容来确保我的图中的图形大小是一致的大小:
import matplotlib as mpl
rc_fonts = {'figure.figsize': (15, 9.3)}
mpl.rcParams.update(rc_fonts)
import matplotlib.pylab as plt
但是,我现在发现,对于我通常的默认值(15, 9.3)
,这被忽略了。以下内容证明了这一点:
import matplotlib as mpl
rc_fonts = {'figure.figsize': (15, 9.3)}
mpl.rcParams.update(rc_fonts)
import matplotlib.pylab as plt
# I draw some boring plot.
plt.clf()
plt.plot(*[range(10)]*2)
print plt.gcf().get_size_inches()
print mpl.rcParams['figure.figsize']
plt.gcf().set_size_inches(15, 9.3, forward=True)
print plt.gcf().get_size_inches()
初始地图尺寸为[10.35, 9.3]
,根据需要为[15, 9.3]
。但是,如果我使默认值非常大或更小,例如(32,19.3)然后图形窗口的大小正确。我想保持我想要的路线改变rcParams
以设置默认值,而不是试图通过制作临时虚拟图来设置它两次。这是一个错误,还是我以错误的方式解决这个问题?
详细说明:
TkAgg
(我希望保留原样)。 PS - 我更喜欢避免使用matplotlib fig
和ax
对象,而是直接使用plt
接口。如果可能的话,我想用任何解决方案保持这种方式。
可能的已知问题:
我在github上发现了以下问题2716,我认为这是导致这种情况,但是没有出现适合rcParam设置路由的任何修复。所以任何帮助或建议仍然是受欢迎的。
当前输出:
以下评论是一些示例输出(使用Python 3完成以允许我安装最新版本的matplotlib):
Python 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] on linux
>>>
... import matplotlib as mpl
... print(mpl.__version__)
... rc_fonts = {'figure.figsize': (15, 9.3)}
... mpl.rcParams.update(rc_fonts)
... import matplotlib.pylab as plt
... plt.plot(*[range(10)]*2)
...
Backend Qt4Agg is interactive backend. Turning interactive mode on.
2.2.0rc1+124.gf1f83f6
>>>
... print(plt.gcf().get_size_inches())
... print(mpl.rcParams['figure.figsize'])
... plt.gcf().set_size_inches(15, 9.3, forward=True)
... print(plt.gcf().get_size_inches())
...
[ 10.35 9.3 ]
[15.0, 9.3]
[ 15. 9.3]
演示
问题的根源
如接受的答案中所述,问题是我使用多个显示器,并且Matplotlib无法生成大于主显示器的窗口。不幸的是,改变Ubuntu认为是主要显示器的是目前尚未解决的问题。因此问题不在于Matplotlib,而在于Ubuntu。通过在我的设置中将显示设置为左上角显示器,我能够解决此问题。
答案 0 :(得分:1)
问题出现是因为there are several screens in use并且显示的数字不是主要数字。
目前无法自动显示大于主屏幕上允许的最大化窗口的数字。如果数字大于该数字,它仍然缩小以适合绘图窗口。
在窗口启动后,人们可能确实将图形调整为任何其他尺寸,正如在使用
的问题中所做的那样plt.gcf().set_size_inches(15, 9.3, forward=True)