2014-10-31 44 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.)) 
相關問題