8000 Is it an issue that map.colorbar(extend='both') does not work? · Issue #16236 · matplotlib/matplotlib · GitHub 10000
[go: up one dir, main page]

Skip to content
Is it an issue that map.colorbar(extend='both') does not work? #16236
Closed
@linlintamu

Description

@linlintamu

I made a contour plot over a global map.
Since it is a contour plot, I also plot a colorbar along with it.

Bug report

When I set map.colorbar(..., extend='both'), it does not work at all. The colorbar has no changes.
Can anyone help?

Thank you very much!

Bug summary

Code for reproduction

def plot_ann_mean_precip(lat,lon,var, unit, title, rngeup, rngedo, interval, colorbarr,font):
    lat  = lat  
    lon  = lon 
    var  = var         

    #-- create figure and axes instances
    #dpi = 100
    #fig = plt.figure(figsize=(1000/dpi, 1000/dpi), dpi=dpi)
    #ax  = fig.add_axes([0.1,0.1,0.8,0.9])

    #-- create map
    map = Basemap(projection='cyl',
                  llcrnrlat= -90.,urcrnrlat= 90.,\
                  resolution='c',  
                  llcrnrlon=0.,urcrnrlon=357.5)

    #-- draw coastlines, state and country boundaries, edge of map
    map.drawcoastlines()
    #map.drawstates()
    #map.drawcountries()

    #-- create and draw meridians and parallels grid lines
    map.drawparallels(np.arange( -90., 100.,30.),labels=[1,0,0,0],fontsize=8,linewidth=0.4,color='white')
    map.drawmeridians(np.arange(0.,357.5,60.),labels=[0,0,0,1],fontsize=8,linewidth=0.4,color='white')

    #-- convert latitude/longitude values to plot x/y values
    x, y = map(*np.meshgrid(lon,lat))

    #-- contour levels
    clevs = np.arange(rngedo,rngeup,interval)
    
    cmap2 = plt.get_cmap(colorbarr)
    cmap2.set_over('darkred')
    cmap2.set_under('navy')

    #-- draw filled contours
    cnplot = map.contourf(x,y,var,clevs,cmap=cmap2)

    #-- add colorbar
    cbar = map.colorbar(cnplot, location='right', pad=0.05, boundaries=[clevs[0]-100] + clevs + [clevs[-1]+100], extend='both')      #-- pad: distance between map and colorbar
    cbar.set_label(unit,size=7)                                                                            #-- add colorbar title string
    cbar.ax.tick_params(axis='y',direction='in',labelsize=7)

    #-- add plot title
    plt.title(title,loc='left',fontdict=font)

    #-- displa on screen
    #plt.show()

    #-- maximize and save PNG file
    #plt.savefig('plot_matplotlib_contour_filled_rect.png', bbox_inches='tight', dpi=dpi)

Actual outcome

# If applicable, paste the console output here
#
#

Expected outcome

Matplotlib version

  • Operating system:
  • Matplotlib version:
  • Matplotlib backend (print(matplotlib.get_backend())):
  • Python version:
  • Jupyter version (if applicable):
  • Other libraries:

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0