matplotlib 底图正射投影保存的文件覆盖与显示区域不同的区域
matplotlib basemap othographic projection saved file covers different area from displayed one
我正在尝试将一小块正交投影保存到文件中(使用 savefig())。使用 plt.show() 的图显示了正确的区域,但保存的图(使用 plt.savefig())显示了整个磁盘的区域,所需地图在中心以小比例显示。
下面左图显示了正确的显示区域。右图显示了整个地球的圆盘,所选区域在中心缩小。
如果有人能指出如何将所选区域保存到图像文件中,我将不胜感激。
from mpl_toolkits.basemap import Basemap
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.lines as lines
import numpy as np
lon_0 = 5.0
lat_0 = 45.0
max_lat = lat_0 + 10.0
min_lat = lat_0 - 10.0
max_lon = lon_0 + 15.0
min_lon = lon_0 - 15.0
plt.figure(figsize=(6,6))
my_map = Basemap(projection='ortho', lon_0=lon_0, lat_0=lat_0, resolution='l')
my_map.drawcoastlines()
my_map.drawcountries()
my_map.drawparallels(np.arange(-90.,95.,5.))
my_map.drawmeridians(np.arange(0.,365.,5.))
xmin, ymin = my_map(min_lon, min_lat)
xmax, ymax = my_map(max_lon, max_lat)
my_map.plot( [xmin, xmax], [ymin, ymax], marker=None,color='m') # plot a cross
my_map.plot( [xmin, xmax], [ymax, ymin], marker=None,color='m')
ax = plt.gca() # set the axes limits
ax.set_xlim(xmin, xmax)
ax.set_ylim(ymin, ymax)
output_file = 'example_a.png'
plt.savefig( output_file, bbox_inches='tight', dpi=20) # save image
plt.show()
plt.close('all')
您可以通过删除 bbox_inches='tight'
来解决此问题。此设置将覆盖 xlim
和 ylim
设置,而是尝试包括图中的所有线(包括地球圆)。查看 pyplot.savefig
docs。
我正在尝试将一小块正交投影保存到文件中(使用 savefig())。使用 plt.show() 的图显示了正确的区域,但保存的图(使用 plt.savefig())显示了整个磁盘的区域,所需地图在中心以小比例显示。
下面左图显示了正确的显示区域。右图显示了整个地球的圆盘,所选区域在中心缩小。
如果有人能指出如何将所选区域保存到图像文件中,我将不胜感激。
from mpl_toolkits.basemap import Basemap
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.lines as lines
import numpy as np
lon_0 = 5.0
lat_0 = 45.0
max_lat = lat_0 + 10.0
min_lat = lat_0 - 10.0
max_lon = lon_0 + 15.0
min_lon = lon_0 - 15.0
plt.figure(figsize=(6,6))
my_map = Basemap(projection='ortho', lon_0=lon_0, lat_0=lat_0, resolution='l')
my_map.drawcoastlines()
my_map.drawcountries()
my_map.drawparallels(np.arange(-90.,95.,5.))
my_map.drawmeridians(np.arange(0.,365.,5.))
xmin, ymin = my_map(min_lon, min_lat)
xmax, ymax = my_map(max_lon, max_lat)
my_map.plot( [xmin, xmax], [ymin, ymax], marker=None,color='m') # plot a cross
my_map.plot( [xmin, xmax], [ymax, ymin], marker=None,color='m')
ax = plt.gca() # set the axes limits
ax.set_xlim(xmin, xmax)
ax.set_ylim(ymin, ymax)
output_file = 'example_a.png'
plt.savefig( output_file, bbox_inches='tight', dpi=20) # save image
plt.show()
plt.close('all')
您可以通过删除 bbox_inches='tight'
来解决此问题。此设置将覆盖 xlim
和 ylim
设置,而是尝试包括图中的所有线(包括地球圆)。查看 pyplot.savefig
docs。