Bug summary
When setting bbox_inches='tight' in savefig function, the colorbar is plotted in the wrong way.
Code for reproduction
import matplotlib.pyplot as plt import numpy as np from mpl_toolkits.basemap import Basemap outfile = r'E:\wrong.tif' # read in data on lat/lon grid. hgt = np.loadtxt(r'E:\tmp\basemap\500hgtdata.gz') lons = np.loadtxt(r'E:\tmp\basemap\500hgtlons.gz') lats = np.loadtxt(r'E:\tmp\basemap\500hgtlats.gz') lons, lats = np.meshgrid(lons, lats) mnh = Basemap(lon_0=-105, boundinglat=20., resolution='c', area_thresh=10000., projection='nplaea') xnh, ynh = mnh(lons, lats) CS = mnh.contour(xnh, ynh, hgt, 15, linewidths=0.5, colors='k') CS = mnh.contourf(xnh, ynh, hgt, 15, cmap=plt.cm.Spectral) mnh.drawcoastlines(linewidth=0.5) delat = 30. circles = np.arange(0., 90., delat).tolist() + \ np.arange(-delat, -90, -delat).tolist() mnh.drawparallels(circles, labels=[1, 0, 0, 0]) delon = 45. meridians = np.arange(0, 360, delon) mnh.drawmeridians(meridians, labels=[1, 0, 0, 1]) plt.title('NH 500 hPa Height (cm.Spectral)') # colorbar on bottom. mnh.colorbar(pad='5%') plt.savefig(outfile, dpi=300, bbox_inches='tight') # wrong # plt.savefig(outfile, dpi=300) # right plt.show()
Actual outcome
The wrong one:
# If applicable, paste the console output here # None #
Expected outcome
The correct figure:
Matplotlib version
I install matplotlib and basemap from https://www.lfd.uci.edu/~gohlke/pythonlibs.
This should probably be reported in the base map subgroup. Can you make this self contained?
Things changed for drawing colorbars in MPL 3.0 and it’s possible we broke something for basemap, but it’s hard to know what.
OK, I will report it in the basemap subgroup.
OK I can reproduce in Matplotlib:
Edit: has nothing to do with colorbar:
import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.axes_grid1 import make_axes_locatable fig, ax = plt.subplots() divider = make_axes_locatable(ax) cax = divider.append_axes('right', size='5%', pad='2%') plt.savefig('boo.pdf', dpi=300, bbox_inches='tight') # wrong
Crossref matplotlib/basemap#426
Bisect says it was my PR: #9855
This is quite a wild goose chase: #10682 also made this not work even if I roll back #9855 changes.
Activity
jklymak commented on Oct 1, 2018
This should probably be reported in the base map subgroup. Can you make this self contained?
Things changed for drawing colorbars in MPL 3.0 and it’s possible we broke something for basemap, but it’s hard to know what.
jiaozhh commented on Oct 1, 2018
OK, I will report it in the basemap subgroup.
jklymak commented on Oct 1, 2018
OK I can reproduce in Matplotlib:
Edit: has nothing to do with colorbar:
jklymak commented on Oct 1, 2018
Crossref matplotlib/basemap#426
jklymak commented on Oct 1, 2018
Bisect says it was my PR: #9855
jklymak commented on Oct 1, 2018
This is quite a wild goose chase: #10682 also made this not work even if I roll back #9855 changes.