2014-10-31 37 views
2

我想在python上使用mpl_toolkits.basemap,并且每次使用drawcoastlines()或任何其他绘图功能时,程序都会自动在屏幕上显示绘图。有没有办法让底图不显示情节?

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

有什么办法可以避免当我使用底图功能时显示的情节? 我只是想将它保存到一个文件,以便以后我可以在外部读取它。

我的代码是:

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.)) 
+0

您使用的是什么python shell?我怀疑你正在使用iPython?当我用cPython(即'python')shell运行你的代码时,它不会显示数字,除非我调用'matplotlib.pyplot.show()'(或者其他类似的东西)。 – farenorth 2014-10-31 16:19:32

+0

是的,我使用的是ipython,但是当我在我的电脑的控制台中使用python filename.py时,图形没有出现,但是如果我在服务器控制台上这样做,它会返回相同的错误。 – Numlet 2014-10-31 16:41:14

+0

您是否尝试过明确设置交互模式,即'plt.ioff()'?或者你是否明确地尝试过使用非交互式后端,即将'matplotlib.rcsetup.non_interactive_bk'中的一个字符串提供给'matplotlib.use'? – farenorth 2014-10-31 17:02:53

回答

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.)) 
相关问题