python matplotlib Agg与交互式绘图和tight_layout

时间:2013-03-16 21:43:16

标签: python matplotlib plot

如果我使用Agg后端,我无法使用show()打开图像窗口(无论block=True与否) - 它们几乎立即关闭。如果我不使用Agg,那么我会收到警告:

/Library/Python/2.7/site-packages/matplotlib-1.2.0-py2.7-macosx-10.8-intel.egg/matplotlib/tight_layout.py:225: UserWarning: tight_layout : falling back to Agg renderer warnings.warn("tight_layout : falling back to Agg renderer")

示例代码:

import matplotlib as mpl
mpl.use('Agg')      # With this line = figure disappears; without this line = warning
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111)
mu, sigma = 0, 0.5
x = np.linspace(-3, 3, 100)
plt.plot(x, mlab.normpdf(x, mu, sigma))
fig.tight_layout()
plt.show()

我应该使用不同的后端或方法吗?

2 个答案:

答案 0 :(得分:7)

@FilipeCorreia in a comment提供的解决方法是删除mpl.use('Agg'),并使用fig.set_tight_layout(True)代替fig.tight_layout()

答案 1 :(得分:6)

Aggnon-interactive backend,这意味着它不会显示在屏幕上,只保存到文件中。你使用的是哪个后端?你有OSX,也许你可以试试'macosx',或者使用Agg的交互式后端(例如QT4Agg,WXAgg)。