[Matplotlib-users] Single Colorbar for multiple subplots

Benjamin Root ben.v.root at gmail.com
Mon Aug 7 13:03:48 EDT 2017


Another approach that I like is to use:
https://matplotlib.org/examples/axes_grid/demo_axes_grid.html

On Sat, Aug 5, 2017 at 1:05 PM, Klymak Jody <jklymak at uvic.ca> wrote:

> I modified matplotlib to let you do this by passing an array of axes to
> the ax argument of colorbar.  It's in the git master branch but that has
> other bugs so you may not want to use it yet.
>
> But the way to do this with older releases is to make the axis you want to
> put the colorbar in manually (cbax=fig.add_axes) with the correct position
> and then pass cbax to colorbar as the argument to the parameter cax.  Of
> course you may need to make the other subplots smaller prob using the
> subplots_adjust method if the figure.
>
> Cheers.  Jody
>
>
>
> Sent from my iPhone
>
> > On Jul 19, 2017, at 07:31, danjames95 <danjames95 at live.co.uk> wrote:
> >
> > Hi,
> >
> > I am trying to plot 4 subplots in a 2 by 2 grid for mean sea level
> pressure
> > data over the four seasons.
> >
> > I have managed to plot all four in the same figure with their own
> individual
> > colorbars, however, I would ideally like the figure to display one
> colorbar
> > at the bottom to represent all four figures and I have been unsuccessful
> in
> > doing this so far. There have been a few posts on this but as this is my
> > first assignment (i'm a student at university) with python, I'm
> struggling
> > to understand the answers!
> >
> > The section of my code which involves the plotting of data is as follows:
> >
> > ...
> > #Select Projection
> > lon_0= 0
> > lat_0=lats.mean()
> >
> > m = Basemap(projection = 'cyl', lat_0=lat_0, lon_0=lon_0, resolution =
> 'l')
> > #Convert Lons and Lats
> > x,y = np.meshgrid (lons_shifted,lats)
> > xx,yy= m(x,y)
> >
> > v = np.linspace(980, 1030, 11, endpoint=True)
> >
> > fig = plt.figure()
> >
> > plt.subplot(2, 2, 1)
> > set1 = m.contourf(xx,yy,MSLP_WINTER, v)
> > m.drawmapboundary()
> > m.drawcoastlines()
> > plt.title('Winter')
> > bar = plt.colorbar(orientation = 'horizontal', ticks = v, format =
> '%.0f')
> > plt.xlim(-80,20)
> > plt.ylim (20,70)
> >
> > plt.subplot(2, 2, 2)
> > set2 = m.contourf(xx,yy,MSLP_SPRING, v)
> > m.drawmapboundary()
> > m.drawcoastlines()
> > plt.title('Spring')
> > bar = plt.colorbar(orientation = 'horizontal', ticks = v)
> > plt.xlim(-80,20)
> > plt.ylim (20,70)
> >
> > plt.subplot(2, 2, 3)
> > set3 = m.contourf(xx,yy,MSLP_SUMMER, v)
> > m.drawmapboundary()
> > m.drawcoastlines()
> > plt.title('Summer')
> > bar = plt.colorbar(orientation = 'horizontal', ticks = v)
> > plt.xlim(-80,20)
> > plt.ylim (20,70)
> >
> > plt.subplot(2, 2, 4)
> > set4 = m.contourf(xx,yy,MSLP_AUTUMN, v)
> > m.drawmapboundary()
> > m.drawcoastlines()
> > plt.title('Autumn')
> > bar = plt.colorbar(orientation = 'horizontal', ticks = v)
> > plt.xlim(-80,20)
> > plt.ylim (20,70)
> >
> > plt.suptitle("Seasonally Averaged Mean Sea Level Pressure between 2006 to
> > 2016")
> >
> > plt.show()
> >
> > This creates the following image:
> > <http://matplotlib.1069221.n5.nabble.com/file/n48091/MSLP_
> Seasonal_Averages.png>
> >
> > Any help would be very much appreciated.
> > Also, if there any obvious bad habits within this code, please feel free
> to
> > point them out!
> >
> > Thanks,
> > Dan
> >
> >
> >
> > --
> > View this message in context: http://matplotlib.1069221.n5.
> nabble.com/Single-Colorbar-for-multiple-subplots-tp48091.html
> > Sent from the matplotlib - users mailing list archive at Nabble.com.
> > _______________________________________________
> > Matplotlib-users mailing list
> > Matplotlib-users at python.org
> > https://mail.python.org/mailman/listinfo/matplotlib-users
>
> _______________________________________________
> Matplotlib-users mailing list
> Matplotlib-users at python.org
> https://mail.python.org/mailman/listinfo/matplotlib-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20170807/449b7edf/attachment.html>


More information about the Matplotlib-users mailing list