¿Por qué pcolor con matrices enmascaradas llena cuadrángulos no deseados cuando se proyecta en coordenadas de cartopia?

Esta es una pregunta de seguimiento paraPrevención de líneas horizontales espurias para datos de pcolor (malla) sin cuadrícula y¿por qué pcolor con matriz enmascarada todavía llena los cuadrángulos que se conectan a puntos enmascarados, y cómo detengo esto?. En las coordenadas regulares, cuando enmascaro las coordenadas y los datos, puedo trazar un pcolor para las coordenadas que se envuelven, como las longitudes, en dos partes, y ahora logro no obtener cuadrángulos no deseados cuando estoy en coordenadas regulares. Sin embargo, cuando lo transformo en coordenadas de mapa, esta solución falla:

#!/usr/bin/env python3.6

from numpy import array, ma
from matplotlib.pyplot import figure, pcolor, savefig, axes

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(ma.masked_where(lons>0, lons), ma.masked_where(lons>0, lats), bts)
pcolor(ma.masked_where(lons<0, lons), ma.masked_where(lons<0, lats), bts)
savefig("/tmp/ok.png")

# now with cartopy
import cartopy.crs as ccrs
proj = ccrs.Mollweide(central_longitude=0)
trans = proj.transform_points(ccrs.Geodetic(), lons, lats)
figure()
ax = axes(projection=proj)
ax.pcolormesh(ma.masked_where(lons>0, trans[:, :, 0]), ma.masked_where(lons>0, trans[:, :, 1]), ma.masked_where(lons>0, bts), transform=proj)
ax.pcolormesh(ma.masked_where(lons<0, trans[:, :, 0]), ma.masked_where(lons<0, trans[:, :, 1]), ma.masked_where(lons<0, bts), transform=proj)
savefig("/tmp/not_ok.png")

En coordenadas regulares, según lo deseado:

En las coordenadas del mapa, los cuadrángulos no deseados están de vuelta:

Tenga en cuenta que cualquier longitud positiva se asigna a cualquier coordenada de mapa positiva y viceversa, porque la longitud central para la proyección actual es cero. Cuando enmascaro adicionalmente longitudes iguales a ± 180 sigo teniendo la misma situación. Entonces el problema yace en otra parte. ¿Cómo puedo trazar elpcolor en dos partes, mientras que en las coordenadas del mapa proyectado?

Respuestas a la pregunta(1)

Su respuesta a la pregunta