Numpy pcolormesh: TypeError: Dimensions of C are incompatible with X and/or Y

matplotlib, numpy, python

Solution

This may look very amazing, but the explanation is simple...

The error message is printed in this way:

if not (numCols in (Nx, Nx - 1) and numRows in (Ny, Ny - 1)):
    raise TypeError('Dimensions of C %s are incompatible with'
                            ' X (%d) and/or Y (%d); see help(%s)' % (
                                C.shape, Nx, Ny, funcname))

The point here is that the shape of `C` is printed in (rows, cols) order, whereas X represents columns and Y rows. You should have an array (31, 55) to make it work.

Transpose your array, and it stops complaining. Admittedly, the error message is rather surprising.

Problem

This code: ``` xedges = np.arange(self.min_spread - 0.5, self.max_spread + 1.5) yedges = np.arange(self.min_span - 0.5, self.max_span + 1.5) h, xe, ye = np.histogram2d( self.spread_values , self.span_values , [xedges, yedges] ) fig = plt.figure(figsize=(7,3)) ax = fig.add_subplot(111) x, y = np.meshgrid(xedges, yedges) ax.pcolormesh(x, y, h) ``` Gives this error: ``` TypeError: Dimensions of C (55, 31) are incompatible with X (56) and/or Y (32); see help(pcolormesh) ``` If there are 55x31 bins, isn't 56x32 bin edges in the grid correct?

Original source