I have found a (possible) bug in Basemap - when using basemap.fillcontinents(), I see the chosen continent color only when the map I create includes some ocean. If I am in the interior of a continent (I've tested with North America and Asia), the continent color is white.
A code sample is below. My version information:
Basemap: 0.99.4
Matplotlib: 0.99.1.1
numpy: 1.4.0
Python: 2.6.4
To replicate my results, please try the following:
./maptest.py 37.894507 -121.816406 #map center is somewhere in the Bay Area in California
./maptest.py 41.880332 -100.47821 #map center is somewhere in Nebraska
The script creates a file called "output.png" in the calling directory. In the California case, I see the ocean as blue, and the land as a sort of annoying salmon color. In the Nebraska case, I see white with blue denoting the various rivers and lakes in the area.
Am I mis-using the basemap method calls in some way?
Thanks,
Mike
···
--------------------------------------------------------------------
#!/usr/bin/env python
import matplotlib
#use the non-interactive matplotlib setting
matplotlib.use('agg')
from mpl_toolkits.basemap import Basemap
import numpy as np
from pylab import *
import sys
clat = float(sys.argv[1])
clon = float(sys.argv[2])
figwidth = 5.4
bounds = (clon-4, clon+4, clat-4, clat+4)
dx = (bounds[1] - bounds[0])*111191 * np.cos(clat * np.pi/180)
dy = (bounds[3] - bounds[2])*111191
aspect = dy/dx
figheight = aspect * figwidth
fig = figure(figsize=(figwidth,figheight),edgecolor='g',facecolor='g')
ax1 = fig.add_axes([0,0,1.0,1.0])
mapcontour = Basemap(llcrnrlon=bounds[0],llcrnrlat=bounds[2],
urcrnrlon=bounds[1],urcrnrlat=bounds[3],
resolution='h',projection='merc',lat_ts=clat)
water_color = [.47,.60,.81]
mapcontour.drawrivers(color=water_color)
mapcontour.drawcountries(color='k',linewidth=2.0)
mapcontour.drawcoastlines()
mapcontour.fillcontinents(color=[1.0,0.8,0.8],lake_color=water_color)
plt.savefig('output.png')
--------------------------------------------------------------------