matplotlib在解释器和脚本中的不同行为

时间:2016-05-02 18:19:01

标签: python matplotlib

在python解释器中运行以下代码会显示带有随机值的图形

>>>fig = plt.figure();ax1 = fig.add_subplot(111);plt.ion();ax1 = ax1.imshow(np.random.rand(256,256))

将以下脚本作为文件运行时不显示任何输出/数字。

import numpy as np
import matplotlib.pyplot as plt
import time

fig = plt.figure()
ax1 = fig.add_subplot(111)
plt.ion()
ax1 =ax1.imshow(np.random.rand(256,256))

行为不同的原因是什么?

1 个答案:

答案 0 :(得分:0)

我怀疑发生了什么

matplotlib.rcParams['interactive'] == True

,这是在.matplotlibrc文件中设置的。

这意味着plt.show是非阻塞的(因此您可以获得一个可以与交互的数字,一个命令提示符,您可以在其中键入更多代码)。但是,在脚本的情况下,(隐式)plt.show不会阻止,因此脚本会退出,并使用该数字。

我建议将interactive rcparam设置为False,然后在repl中将explitily设置为true,或者(首选方法)使用IPython%matplotlib魔法。