¿Por qué pcolor con matriz enmascarada todavía llena los cuadrangularjs que se conectan a los puntos enmascarados, y cómo detengo esto?

Para mitigar el problema descrito aquí , estoy tratando de dibujar mi ttwig de pcolor en dos partes complementarias. Tengo datos de X e Y que corresponden a longitud y latitud, respectivamente (en realidad, esto se traduce en coordenadas de proyección mediante cartopy , pero el problema en cuestión es independiente de eso). La longitud puede envolver al antimeridiano, lo que hace que se dibujen cuadrantes en todo el mundo. Para evitar esto, estoy tratando de dibujar las dos partes por separado, como se ilustra a continuación:

 #!/usr/bin/env python3.6 from numpy import array, ma from matplotlib.pyplot import figure, pcolor, savefig lons = array([[ 100., 120., 140., 160., 180.], [ 120., 140., 160., 180., -160.], [ 140., 160., 180., -160., -140.], [ 160., 180., -160., -140., -120.], [ 180., -160., -140., -120., -100.], [-160., -140., -120., -100., -80.]]) lats = array([[ 0., 10., 20., 30., 40.], [ 0., 10., 20., 30., 40.], [ 0., 10., 20., 30., 40.], [ 0., 10., 20., 30., 40.], [ 0., 10., 20., 30., 40.], [ 0., 10., 20., 30., 40.]]) bts = array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19], [20, 21, 22, 23, 24], [25, 26, 27, 28, 29]]) figure() pcolor(lons, lats, ma.masked_where(lons>0, bts)) savefig("/tmp/ok.png") figure() pcolor(lons, lats, ma.masked_where(lons<0, bts)) savefig("/tmp/not_ok.png") 

Ahora, la ttwig en la que enmascara todas las longitudes positivas se ve más o menos como esperaría que:

longitudes positivas enmascaradas

pero la ttwig en la que enmascara todas las longitudes negativas, aún traza cuadrantes en todos los ejes:

longitudes negativas enmascaradas

En la segunda gráfica, me gustaría dibujar solo los cuadrangularjs correspondientes a las longitudes positivas. ¿Por qué sigue haciendo conexiones a valores enmascarados y cómo puedo evitar que esto suceda?

Veo que tal vez no fui lo suficientemente claro en mi comentario rápido sobre la otra pregunta, pero al enmascarar quiero decir que la cuadrícula necesita ser enmascarada, no los valores.

 from numpy import array, ma import matplotlib.pyplot as plt lons = array([[ 100., 120., 140., 160., 180.], [ 120., 140., 160., 180., -160.], [ 140., 160., 180., -160., -140.], [ 160., 180., -160., -140., -120.], [ 180., -160., -140., -120., -100.], [-160., -140., -120., -100., -80.]]) lats = array([[ 0., 10., 20., 30., 40.], [ 0., 10., 20., 30., 40.], [ 0., 10., 20., 30., 40.], [ 0., 10., 20., 30., 40.], [ 0., 10., 20., 30., 40.], [ 0., 10., 20., 30., 40.]]) bts = array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19], [20, 21, 22, 23, 24], [25, 26, 27, 28, 29]]) fig, (ax,ax2) = plt.subplots(ncols=2) ax.pcolor(ma.masked_where(lons>0, lons), ma.masked_where(lons>0, lats), ma.masked_where(lons>0, bts)) ax2.pcolor(ma.masked_where(lons<0, lons), ma.masked_where(lons<0, lats), ma.masked_where(lons<0, bts)) plt.show() 

introduzca la descripción de la imagen aquí