interpolación con matplotlib pcolor

Tengo dos matrices numpy, la primera es (30, 365) y contiene valores para 30 profundidades a lo largo del año, la segunda matriz es (30, 1) y contiene la profundidad real (en metros) correspondiente a las profundidades en el primera matriz Quiero trazar la primera matriz de manera que las profundidades se escalan de acuerdo con la segunda, pero también quiero que los datos se interpolan (las primeras profundidades están relativamente juntas, mientras que las profundidades más bajas están muy separadas, lo que proporciona un aspecto de bloque a la imagen del pcolor) .)

Esto es lo que estoy haciendo:

import numpy as np import matplotlib.pyplot as plt x = np.arange(0, 365, 1) X, Y = np.meshgrid(x, depth) #depth is the (30, 1) array plt.pcolor(X, -Y, data) #data is the (30, 365) array 

¿Cuál es el resultado de la apariencia de bloques, alguna idea sobre cómo podría obtener un gráfico de aspecto más suave?

¿Están sus profundidades en una cuadrícula regular (es decir, espaciado constante)? Si es así, puede usar imshow y establecer el rango con la palabra clave de extent y aspect='auto' . De lo contrario, tienes dos opciones.

Puede usar pcolormesh en pcolormesh lugar y usar shading='gouraud' . Esto ayudará con la cuantización del color nítido, pero no tan bueno como la interpolación.

La segunda opción es interpolar los datos a una nueva cuadrícula de profundidad regular, para que pueda usar imshow y las diferentes opciones de interpolación. Por ejemplo, para interpolar solo a lo largo de la dirección de la profundidad, puede usar interpolate.interp1d de scipy:

 from scipy.interpolate import interp1d fint = interp1d(depth, data.T, kind='cubic') newdata = fint(newdepth).T 

Se agregó .T porque la interpolación tiene que estar en el último índice, y la profundidad es el primer índice de sus datos. Puede reemplazar el kind por 'linear' si lo prefiere.

No, pcolor no hace interpolación. Puedes probar NonUniformImage o incluso imshow en imshow lugar. Echa un vistazo a los ejemplos aquí