Python : 2d contour plot from 3 lists : x, y and rho?
Question: I have a simple problem in python and matplotlib. I have 3 lists : x, y and
rho with rho[i] a density at the point x[i], y[i]. All values of x and y are
between -1. and 1. but they are not in a specific order.

How to make a contour plot (like with imshow) of the density rho (interpolated
at the points x, y).

Thank you very much.

EDIT : I work with large arrays : x, y and rho have between 10,000 and
1,000,000 elements


Answer: You need to interpolate your `rho` values. There's no one way to do this, and
the "best" method depends entirely on the a-priori information you should be
incorporating into the interpolation.

Before I go into a rant on "black-box" interpolation methods, though, a radial
basis function (e.g. a "thin-plate-spline" is a particular type of radial
basis function) is often a good choice. If you have millions of points, this
implementation will be inefficient, but as a starting point:

    
    
    import numpy as np
    import matplotlib.pyplot as plt
    import scipy.interpolate
    
    # Generate data:
    x, y, z = 10 * np.random.random((3,10))
    
    # Set up a regular grid of interpolation points
    xi, yi = np.linspace(x.min(), x.max(), 100), np.linspace(y.min(), y.max(), 100)
    xi, yi = np.meshgrid(xi, yi)
    
    # Interpolate
    rbf = scipy.interpolate.Rbf(x, y, z, function='linear')
    zi = rbf(xi, yi)
    
    plt.imshow(zi, vmin=z.min(), vmax=z.max(), origin='lower',
               extent=[x.min(), x.max(), y.min(), y.max()])
    plt.scatter(x, y, c=z)
    plt.colorbar()
    plt.show()
    

![enter image description here](http://i.stack.imgur.com/5eIUg.png)

