有没有办法让Basemap不显示图形?

3
我正在尝试在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.))

你使用的是哪个Python shell?我猜你在用iPython?当我在cPython(即python)shell中运行你的代码时,除非我调用matplotlib.pyplot.show()(或等效的命令),否则不会显示图形。 - farenorth
是的,我正在使用IPython,但是当我在计算机控制台中使用“python filename.py”时,图形不会显示出来,但如果我在服务器控制台上这样做,它会返回相同的错误。 - Numlet
你尝试过显式地关闭交互模式吗?例如 plt.ioff()? 或者你尝试过显式地使用非交互式后端,即将 matplotlib.use 中的字符串之一提供给 matplotlib.rcsetup.non_interactive_bk 吗? - farenorth
重复的问题?https://dev59.com/52Uo5IYBdhLWcg3w3ycF - farenorth
2个回答

2

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接