有没有办法要求Basemap不显示情节?

时间:2014-10-31 16:13:48

标签: python matplotlib plot show matplotlib-basemap

我正在尝试在python上使用mpl_toolkits.basemap,每次我使用一个函数进行绘图,如drawcoastlines()或任何其他,程序会自动在屏幕上显示图。

我的问题是我试图稍后在外部服务器上使用这些程序并返回'SystemExit:无法访问X显示器,是否正确设置了$ DISPLAY?'

有什么办法可以避免在我使用Basemap功能时显示的情节? 我只是想把它保存到一个文件中,以后我可以在外面读它。

我的代码是:

from mpl_toolkits.basemap import Basemap
import numpy as np

m = Basemap(projection='robin',lon_0=0)
m.drawcoastlines()

#m.fillcontinents(color='coral',lake_color='aqua')
# draw parallels and meridians.
m.drawparallels(np.arange(-90.,120.,10.))
m.drawmeridians(np.arange(0.,360.,60.))

2 个答案:

答案 0 :(得分:2)

使用Agg后端,它不需要图形环境:

在脚本的最开头执行此操作:

import matplotlib as mpl
mpl.use('Agg')

另请参阅Generate images without having a window appear上的常见问题解答。

答案 1 :(得分:0)

最简单的方法是推迟matplotlib的交互模式。

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np

#NOT SHOW
plt.ioff()

m = Basemap(projection='robin',lon_0=0)
m.drawcoastlines()

#m.fillcontinents(color='coral',lake_color='aqua')
# draw parallels and meridians.
m.drawparallels(np.arange(-90.,120.,10.))
m.drawmeridians(np.arange(0.,360.,60.))