matplotlib:使用TkAgg后端减少数字大小的麻烦

时间:2014-09-26 01:34:55

标签: python matplotlib

我无法使用TkAgg后端减少matplotlib图形的大小。

首先,让我说明我可以增加数字的大小。运行以下代码后,

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]。减少到62相差甚远。请注意,必须启用交互模式。如果我关闭交互模式(plt.ioff()),TkAgg后端会提供[8, 8][2, 8],但图形窗口的形状看起来仍然更像[8, 7.475]和{{1} }。

如果我切换到Qt4Agg后端,问题就会消失。不幸的是,我无法让Qt4Agg后端与Spyder合作。我将Qt4Agg设置为首选项中的后端 - >控制台 - >外部模块 - > GUI后端,重启Spyder。致电[6, 7.475]会返回mpl.get_backend()

我想要一个与Spyder一起使用的后端,允许我强制图形窗口位于所有其他窗口之上(参见this post),并允许我随意更改图形窗口大小。 / p>

如果重要,我正在运行matplotlib 1.3.1和Enthought Canopy Python 2.7.6。

更新:我得到了Qt4Agg后端与Spyder合作。如果没有人发布解决方案以使TkAgg后端在今晚正常工作,那么我将发布如何使用Spyder的Qt4Agg。

1 个答案:

答案 0 :(得分:0)

好吧,也许用TkAgg后端减少数字窗口大小是不可能的。也许这是一个错误。

作为一种解决方法,Qt4Agg允许您随意更改数字大小。以下是如何将Qt4Agg后端与Spyder 2.3.1一起使用。

  1. 转到首选项 - >控制台 - >外部模块
  2. For" Qt-Python绑定库选择"使用" PyQt4"
  3. 选中"为Qt"安装Spyder的输入挂钩旁边的复选框。
  4. 将GUI后端设置为" Qt4Agg" (不带引号)
  5. 重启Spyder
  6. 注意:如果在重新启动Spyder后再次打开首选项面板,则必须再次执行步骤#2。出于某种原因,Spyder自动默认为" PySide"而不是" PyQt4"任何时候打开首选项窗格。我计划向Spyder开发团队报告。