title: How can I get my contour plot superimposed on a basemap
body: <p>This is a question I asked several months ago and am still struggling to come to a solution. My code gives me a basemap and a contour plot side by side (but printing to file only gives the contour plot), but I want them superimposed. The best solution would the one here <a href="https://gist.github.com/oblakeobjet/7546272" rel="noreferrer">https://gist.github.com/oblakeobjet/7546272</a> but this does not show how to introduce the data, and it is difficult when you are learning from scratch online.
  Without tiring very kind people, I hope the solution is easy as changing a line of code and that someone can help.
  My code</p>
  
  <pre><code>#!/usr/bin/python
  # vim: set fileencoding=UTF8
  
  import numpy as np
  import pandas as pd
  from matplotlib.mlab import griddata
  from mpl_toolkits.basemap import Basemap
  import matplotlib.pyplot as plt
  
  #fig = plt.figure(figsize=(10,8))  #when uncommented draws map with colorbar but no contours
  
  #prepare a basemap
  
  m = Basemap(projection = 'merc',llcrnrlon = 21, llcrnrlat = -18, urcrnrlon = 34, urcrnrlat = -8, resolution='h')
  
  # draw country outlines.
  
  m.drawcountries(linewidth=0.5, linestyle='solid', color='k', antialiased=1, ax=None, zorder=None)
  m.drawmapboundary(fill_color = 'white')
  m.fillcontinents(color='coral',lake_color='blue')
  parallels = np.arange(-18, -8, 2.)
  m.drawparallels(np.arange(-18, -8, 2.), color = 'black', linewidth = 0.5)
  m.drawparallels(parallels,labels=[True,False,False,False])
  meridians = np.arange(22,34, 2.)
  m.drawmeridians(np.arange(21,36, 2.), color = '0.25', linewidth = 0.5)
  m.drawmeridians(meridians,labels=[False,False,False,True])
  
  fig = plt.figure(figsize=(10,8))       # At this position or commented draws teo figures side by side
  
  #-- Read the data.
  
  data = pd.read_csv('../../data/meansr.txt', delim_whitespace=True)
  
  #-- Now gridding data.  First making a regular grid to interpolate onto
  
  numcols, numrows = 300, 300
  xi = np.linspace(data.Lon.min(), data.Lon.max(), numcols)
  yi = np.linspace(data.Lat.min(), data.Lat.max(), numrows)
  xi, yi = np.meshgrid(xi, yi)
  
  #-- Interpolating at the points in xi, yi
  
  x, y, z = data.Lon.values, data.Lat.values, data.Z.values
  zi = griddata(x, y, z, xi, yi)
  
  #-- Display and write the results
  
  m = plt.contourf(xi, yi, zi)
  plt.scatter(data.Lon, data.Lat, c=data.Z, s=100,
         vmin=zi.min(), vmax=zi.max())
  fig.colorbar(m)
  plt.savefig("rainfall.jpg", format="jpg")
  </code></pre>
  
  <p>The plots I get look like this <img src="https://i.stack.imgur.com/UoegA.jpg" alt="contour plot"> and <img src="https://i.stack.imgur.com/ovWTo.png" alt="the basemap"></p>
  
  <p>and my data</p>
  
  <pre><code>32.6  -13.6   41
  27.1  -16.9   43
  32.7  -10.2   46
  24.2  -13.6   33
  28.5  -14.4   43
  28.1  -12.6   33
  27.9  -15.8   46
  24.8  -14.8   44
  31.1  -10.2   35
  25.9  -13.5   24
  29.1   -9.8   10
  25.8  -17.8   39
  33.2  -12.3   44
  28.3  -15.4   46
  27.6  -16.1   47
  28.9  -11.1   31
  31.3   -8.9   39
  31.9  -13.3   45
  23.1  -15.3   31
  31.4  -11.9   39
  27.1  -15.0   42
  24.4  -11.8   15
  28.6  -13.0   39
  31.3  -14.3   44
  23.3  -16.1   39
  30.2  -13.2   38
  24.3  -17.5   32
  26.4  -12.2   23
  23.1  -13.5   27
  </code></pre>