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

3 投票
2 回答
584 浏览
提问于 2025-04-30 21:46

我正在尝试在Python中使用mpl_toolkits.basemap,每次我调用像drawcoastlines()这样的绘图函数时,程序都会自动在屏幕上显示图像。

我的问题是,我打算在一个外部服务器上使用这些程序,但它返回了一个错误:'SystemExit: Unable to access the X Display, is $DISPLAY set properly?' 这意思是它无法访问显示器。

有没有办法让我在使用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

最简单的方法就是关闭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.))
2

使用 Agg 后台,它不需要图形界面:

在你的脚本一开始就这样做:

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

另外,你可以查看常见问题解答,了解如何 生成图像而不出现窗口

撰写回答