我在用TkAgg后端解决matplotlib数字大小时遇到了问题。matplotlib:用TkAgg后端解决数字大小问题
首先,让我证明我可以增加一个数字的大小。运行下面的代码后,
import matplotlib as mpl
mpl.use('TkAgg')
import matplotlib.pyplot as plt
plt.ion()
fig = plt.figure(figsize = [2, 8])
fig.set_size_inches([8,8], forward = True)
fig.canvas.draw()
print fig.get_size_inches()
到fig.get_size_inches()
打电话给[ 8, 7.475]
。这有点烦人,我得到7.475
而不是8
,但我可以处理。接下来,当我运行下面的代码
import matplotlib as mpl
mpl.use('TkAgg')
import matplotlib.pyplot as plt
plt.ion()
fig = plt.figure(figsize = [8, 8])
fig.set_size_inches([2,8], forward = True)
fig.canvas.draw()
print fig.get_size_inches()
然后fig.get_size_inches()
打电话给[ 6, 7.475]
。减少到6
与2
相差甚远。请注意,交互模式必须打开。如果我关闭交互模式(plt.ioff()
),则TkAgg后端会给出[8, 8]
和[2, 8]
,但数字窗口的形状看起来更像[8, 7.475]
和[6, 7.475]
。
如果我切换到Qt4Agg后端,问题就消失了。不幸的是,我不能让Qt4Agg后端与Spyder一起工作。我在Preferences - > Console - > external modules - > GUI backend中将Qt4Agg设置为后端,然后重新启动Spyder。致电mpl.get_backend()
的电话将返回MacOSX
。
我想要一个与Spyder配合使用的后端,可以让我强制将数字窗口置于所有其他窗口之上(请参阅this post),并允许我随意更改数字窗口大小。
万一它很重要,我正在运行matplotlib 1.3.1和Enthought Canopy Python 2.7.6。
更新:我得到了Qt4Agg后端与Spyder一起工作。如果今天晚上没有人发布解决方案让TkAgg后端正常工作,那么我会发布如何将Qt4Agg与Spyder一起使用。
我没有看到任何错误。运行你的代码片段会导致'[10。 10.]'和'[2。 10.]',分别。我正在使用matplotlib 1.2.1和python 2.7.5+。 – 2014-09-26 09:10:47
@TheDude,感谢您的评论。它迫使我进一步检查我的设置。我在Spyder上运行,它具有交互模式。如果交互模式关闭,则TkAgg后端报告“[10。10.]'和'[2。 '],尽管数字窗口大小仍然是错误的。我还发现问题不会发生在所有后端。最后,我将数字窗口大小从[10,10]改为[8,8],以确保我的小型笔记本电脑屏幕不会从10到9.475轻微降低。我原来的帖子已经更新了这些发现。 – Stretch 2014-09-26 14:26:53