Matplotlib Contour Plots

Jamie Mitchell jamiemitchell1604 at gmail.com
Fri Aug 15 10:42:14 EDT 2014


On Friday, August 15, 2014 2:23:25 PM UTC+1, Steven D'Aprano wrote:
> Jamie Mitchell wrote:
> 
> 
> 
> [...]
> 
> > I just want to get a contour plot of two numpy arrays.
> 
> > When I call plt.contour on my data I get "input must be a 2D array"
> 
> 
> 
> You are providing a 1D array, or possibly a 3D array. So the question you
> 
> really want to ask is not "How do I do contour plots" but "how do I make a
> 
> 2D array?"
> 
> 
> 
> 
> 
> > An example of one of my arrays:
> 
> > 
> 
> > array([ 2.08800006,  2.29400015,  2.00400019,  1.88000011,  2.0480001 ,
> 
> >         2.16800022,  2.0480001 ,  1.88200009,  1.95800006,  2.00200009,
> 
> >         2.02800012,  1.81200004,  1.95000005,  1.96200013,  1.95200014,
> 
> >         1.99800014,  2.07000017,  1.88200009,  1.98400009,  2.13400006,
> 
> >         2.11400008,  1.89400005,  2.05000019,  2.01999998,  2.03400016,
> 
> >         2.16600013,  2.00999999,  1.86200011,  2.19800019,  2.01200008],
> 
> >         dtype=float32)
> 
> > 
> 
> > How do I get the above array in to the right format for a contour plot?
> 
> 
> 
> Here's an example of making a 2D array:
> 
> 
> 
> py> import numpy
> 
> py> a = numpy.array([1.2, 2.5, 3.7, 4.8])  # One dimensional array
> 
> py> a
> 
> array([ 1.2,  2.5,  3.7,  4.8])
> 
> py> b = numpy.array([ [1.2, 2.5, 3.7, 4.8], 
> 
> ...                   [9.5, 8.1, 7.0, 6.2] ])  # Two dimensional array
> 
> py> b
> 
> array([[ 1.2,  2.5,  3.7,  4.8],
> 
>        [ 9.5,  8.1,  7. ,  6.2]])
> 
> 
> 
> One dimensional arrays are made from a single list of numbers: [...]
> 
> 
> 
> Two dimensional arrays are made from a list of lists: [ [...], [...] ]
> 
> 
> 
> 
> 
> 
> 
> -- 
> 
> Steven

Thank you Steven.

I created the 2D array which read as:

array([[[ 2.08800006,  2.29400015,  2.00400019,  1.88000011,  2.0480001 ,
          2.16800022,  2.0480001 ,  1.88200009,  1.95800006,  2.00200009,
          2.02800012,  1.81200004,  1.95000005,  1.96200013,  1.95200014,
          1.99800014,  2.07000017,  1.88200009,  1.98400009,  2.13400006,
          2.11400008,  1.89400005,  2.05000019,  2.01999998,  2.03400016,
          2.16600013,  2.00999999,  1.86200011,  2.19800019,  2.01200008]],

       [[ 8.5199995 ,  8.88000011,  8.55000019,  7.94999981,  8.60999966,
          8.5199995 ,  8.80000019,  8.13000011,  8.68999958,  8.72999954,
          8.47999954,  8.25      ,  8.40999985,  8.43999958,  8.38999939,
          8.35999966,  8.63999939,  8.51000023,  8.36999989,  8.69999981,
          8.52999973,  8.13999939,  8.36999989,  8.42000008,  8.55999947,
          8.72999954,  9.09000015,  8.18999958,  8.76000023,  8.53999996]]], dtype=float32)

Unfortunately when I called plt.contour on this, it said again "Input must be a 2D array".

Is there something I have missed?

Thanks,

Jamie



More information about the Python-list mailing list