Estoy intentando generar un trazado de contorno relleno en matplotlib utilizando contourf. Faltan datos en un patrón irregular cerca de la parte inferior de la gráfica. La gráfica de contorno resulta en blanco no solo donde están enmascarados los datos originales, sino también en los bolsillos donde el algoritmo de contorno no puede interpolar limpiamente porque hay una vecindad insuficiente de buenos datos.enmascaramiento de una parte de un trazado contourf en matplotlib
Sé cómo extender el conjunto de datos para producir contornos plausibles en estos bolsillos. Sin embargo, si trazo los datos extendidos obtengo un contorno relleno en todas partes. Me gustaría enmascarar las regiones donde faltaban los datos originales en negro o blanco.
En un hilo anterior aprendí cómo hacer esto para una imagen trazando la primera imagen y luego cubriéndola con otra imagen que enmascara las áreas defectuosas. El análogo sería el fragmento de código a continuación, pero no funciona para un contorno ... No puedo obtener el bad_data imshow para cubrir el trazado contourf extendido. ¿Es posible?
Gracias, Eli
import matplotlib.pyplot as plt
lev = [0.0,0.1,0.2,0.5,1.0,2.0,4.0,8.0,16.0,32.0]
norml = colors.BoundaryNorm(lev, 256)
# this is the contour plot, using extended_data so that the contours are plausibly extended
cs = plt.contourf(x,z,extended_data,levels = lev, cmap = cm.RdBu_r,norm = norml)
# now the attempt to cover it up -- but imshow will not cover up the original plot as it will with another image
bad_data = np.ma.masked_where(~data.mask, data.mask, copy=True)
plt.imshow(bad_data, interpolation='nearest', aspect = 'auto', cmap=cm.gray)
plt.show()
debo añadir que, dado que este post me di cuenta que podía identificar la región y el uso de relleno() para bloquear la región. Entonces, la urgencia es menor, aunque aún sería valioso saber si esto puede hacerse. –
Suponiendo que tiene una matriz de 5x5, y faltaba el índice [1, 1], ¿qué esperaría ver? ¿Dibujaría el índice [1, 1] como marcador? – pelson
¿Puedes publicar un ejemplo de trabajo mínimo? – EnricoGiampieri