Hi Andruska,
The Basemap.colorbar has a size keyword to allow you have the shrink-like
function to adjust the size of the colorbar.
Otherwise you can creat an axes on the exact position you want to hold the
colorbar, like below I have prepared an example for you:
arr = np.arange(100).reshape(10,10)
fig,ax = plt.subplots(1,1)
cs = ax.imshow(arr)
ax.set_position([0.2, 0.3, 0.6, 0.6])
axt = fig.add_axes([0.4,0.2,0.4,0.05])
cbar = plt.colorbar(cs,cax=axt,orientation='horizontal')
fig.text(0.25,0.22,'I am label',va='center',size=13)
draw()
I think it's hard to use the colorbar.set_label put the label directly on
the left of your colorbar, I rather suggest you to use fig.text to
position exactly a text for your label.
At the beginning of matplotlib you might feel confused, but after investing
a significant amount of time you feel it extremely flexible, and going to
like it :)
Cheers,
Chao
On Mon, Jun 16, 2014 at 6:32 PM, Andruska, Michael [via matplotlib]
ml-node+s1069221n43534...@n5.nabble.com wrote:
Hi all,
I am having great difficulty understanding how to change the size of my
basemap colorbar, altering its position and moving the text label all at
the same time. I would like to:
1. Shrink the size of the colorbar (there doesn’t seem to be a
shrink property in the basemap.colorbar() method (only plt.colorbar() or
fig.colorbar())
2. Move the bar so it is not centered but instead so its right edge
is aligned vertically with the right end of the basemap.
3. Move the colorbar W/m^2 text label so it is not below the
colorbar but is instead directly to its left.
I looked up several other responses online that mentioned doing things
such as adding a second axes, or using the shrink command from
plt.colorbar(), and changing some other properties such as padding, but in
the end, most of these alterations seem to introduce another problem when I
try them. Even after viewing their documentation, I still do not fully
understand their proper usage. Also, I tried a few properties listed in the
matplotlib documentation such as anchor and panchor in my the
fig.colorbar() method in attempt to move the bar around but when I tried to
run it, the keyword was not recognized by the interpreter and produced an
error (it seems strange that some of the keywords listed in the docs aren’t
being recognized; and I’m pretty sure I have the most current matplotlib
version too). You can see some of the commented commands I tried in the
code below (not all at once, of course, but just in various conjunctions
with one another). Here is an example of my code and an attached example of
what the plot currently looks like after running said code. Any helpful
advice would be greatly appreciated. So confused right now and I feel like
I’ve read the docs over and over to little avail (P.S. Getting down to the
nitty gritty of working with matplotlib objects and understanding its inner
workings to customize my plots better is really confusing, even with the
docs, (sigh)):
swi = swi.reshape(1059, 1799)
lat = lat.reshape(1059, 1799)
lon = lon.reshape(1059, 1799)
def plot_conus():
m = mpl_toolkits.basemap.Basemap(
llcrnrlon=-135.0,
llcrnrlat=19.0,
urcrnrlon=-60.0,
urcrnrlat=54.0,
projection='mill',
resolution='c')
m.drawcoastlines()
m.drawcountries()
m.drawstates()
# draw parallels
parallels = np.arange(0.,90,10.)
m.drawparallels(parallels,labels=[1,0,0,0],fontsize=10)
# draw meridians
meridians = np.arange(180.,360.,10.)
m.drawmeridians(meridians,labels=[0,0,0,1],fontsize=10)
return m
# find hex color values at http://www.colorpicker.com
swi_colors = [
##f800fd, # light purple
##9854c6, # dark purple
#04e9e7,
#019ff4,
#0300f4,
#02fd02,
#01c501,
#008e00,
#fdf802,
#e5bc00,
#fd9500,
#fd,
#d4,
#bc,
#A10505 # brick
]
swi_colormap = matplotlib.colors.ListedColormap(swi_colors)
m = plot_conus()
levels = []
for i in range(13):
levels.append(i*90.0)
# create black and white cross at observatory location on map
site_lon = -87.99495
site_lat = 41.70121
x_site, y_site = m(site_lon, site_lat)
m.plot(x_site, y_site, 'w+', markersize=30, markeredgewidth=8) # white
cross
m.plot(x_site, y_site, 'k+', markersize=25, markeredgewidth=3) # black
cross
norm = matplotlib.colors.BoundaryNorm(levels, 13)
cax = m.pcolormesh(lon, lat, swi, latlon=True, norm=norm,
cmap=swi_colormap)
#cbar = m.colorbar(cax)
fig = plt.gcf()
#ax = plt.gca()
#cbar = fig.colorbar(cax, orientation='horizontal', shrink=0.75)
#cbaxes = fig.add_axes([0.8, 0.1, 0.03, 0.8])
#cb = fig.colorbar(cax)
cbar = m.colorbar(cax, location='bottom', pad='6%')
cbar.set_label('$W/m^2$', fontsize=18)
plt.title('NOAA LAPS GHI, RT ' + modelrun_time_label + ', VT ' +
fcst_time_label)
plt.show()
--
HPCC Systems Open