Take a look at this tutorial. I would recommend on reading it in its entirety; part of becoming an adept programmer is reading other peoples code and understanding what they did. But, if you're only interested in your answer, scroll down until you see the subtitle "Adding Color", or click on the link that is at the top of the page. Hope this helps!
As it relates to coloring your values, I have some sort of a work around for your problem, which I found here. I modified the rgb function found in the answer to return hex colors, HTML format. Then you will need to create your own color bar based on your the values that are mapped to those colors. You will also need to use something like gridspec to size the figure appropriately.
import matplotlib as mpl
import matplotlib.pyplot as plot
from mpl_toolkits.basemap import Basemap
import matplotlib.gridspec as gridspec
def rgb(mini,maxi,value):
mini, maxi, value = float(mini), float(maxi), float(value)
ratio = 2 * (value - mini) / (maxi-mini)
b = int(max(0,255*(1-ratio)))
r = int(max(0,255*(ratio -1)))
g = 255 - b - r
b = hex(b)
r = hex(r)
g = hex(g)
if len(b) == 3:
b = b[0:2] + '0' + b[-1]
if len(r) == 3:
r = r[0:2] + '0' + r[-1]
if len(g) == 3:
g = g[0:2] + '0' + g[-1]
color = '#'+r[2:]+g[2:]+b[2:]
return color
#gridspec will ensure that we get good size ratios when we display the figure
gs = gridspec.GridSpec(1,2, width_ratios = [20,1], height_ratios = [10,1])
#generate the default map
fig = plot.figure(figsize=(17,10))
ax1 = plot.subplot(gs[:, :-1])
map1 = Basemap(ax=ax1)
#code to add more things to the map
#coloring values
correspondance = {}
minimum = min(list_of_values)
maximum = max(list_of_values)
for lon,lat,val in zip(list_of_longitude, list_of_latitude,list_of_values):
#get the color for this value and add it on to the end of our list
color = rgb(minimum,maximum,value)
#make a dictionary that has each value corresponding to its color
#will be used later to make the color bar
correspondance[val] = color
map1.plot(lon,lat, marker = 'o', color = color)
ax2 = plot.subplot(gs[:-1, 1])
#making a color bar requires the values to be in an ordered list
#as well as the colors to be in an ordered list corresponding to the values
bounds = sorted(set(list_of_values)) #get a list of unique sorted values
colors = [correspondance[value] for value in bounds] #a list of colors corresponding to its value in bounds
cmap = mpl.colorbar.Colorbase(colors, 'indexed')
#bounds needs to of size length of colors + 1
bounds += [max(bounds) + .001]
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)
cb = mpl.colorbar.ColorbarBase(ax2, cmap = cmap, norm = norm, \
boundaries = [float(min(list_of_values)-.1)] + bounds + [float(max(list_of_values)+.1)],\
ticks = bounds, spacing = 'proportional', orientation = 'vertical' )