繁体   English   中英

matplotlib:使用TkAgg后端减小图形大小时遇到​​麻烦

[英]matplotlib: trouble reducing figure size with TkAgg backend

我在使用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][6, 7.475]

如果我切换到Qt4Agg后端,问题就解决了。 不幸的是,我无法让Qt4Agg后端与Spyder一起使用。 我在首选项->控制台->外部模块-> GUI后端中将Qt4Agg设置为后端,然后重新启动Spyder。 调用mpl.get_backend()返回MacOSX

我想要一个与Spyder一起使用的后端,允许我强制将图形窗口置于所有其他窗口的顶部(请参阅此文章 ),并允许我随意更改图形窗口的大小。

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

更新:我有Qt4Agg后端与Spyder一起使用。 如果没有人在今天晚上之前发布解决方案以使TkAgg后端正常工作,那么我将发布如何在Spyder中使用Qt4Agg。

好吧,也许不可能通过TkAgg后端来减小图形窗口的大小。 也许是一个错误。

作为解决方法,Qt4Agg允许您随意更改图形大小。 这是在Spyder 2.3.1中使用Qt4Agg后端的方法。

  1. 转到首选项->控制台->外部模块
  2. 对于“ Qt-Python绑定库选择”,请使用“ PyQt4”
  3. 选中“为Qt安装Spyder的输入挂钩”旁边的框。
  4. 将GUI后端设置为“ Qt4Agg”(不带引号)
  5. 重新启动Spyder

注意:如果在重新启动Spyder之后再次打开首选项窗格,则必须再次执行步骤2。 由于某些原因,每次打开首选项窗格时,Spyder都会自动默认为“ PySide”而不是“ PyQt4”。 我计划将此报告给Spyder开发团队。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM