def transform(self, ll): longitude = ll[:, 0:1] latitude = ll[:, 1:2] # Pre-compute some values half_long = longitude / 2.0 cos_latitude = npy.cos(latitude) alpha = npy.arccos(cos_latitude * npy.cos(half_long)) # Mask this array, or we'll get divide-by-zero errors alpha = ma.masked_where(alpha == 0.0, alpha) # We want unnormalized sinc. numpy.sinc gives us normalized sinc_alpha = ma.sin(alpha) / alpha x = (cos_latitude * npy.sin(half_long)) / sinc_alpha y = (npy.sin(latitude) / sinc_alpha) x.set_fill_value(0.0) y.set_fill_value(0.0) return npy.concatenate((x.filled(), y.filled()), 1)
#!/bin/env python ''' Plot lines with points masked out. This would typically be used with gappy data, to break the line at the data gaps. ''' import matplotlib.numerix.npyma as ma from pylab import * x = ma.arange(0, 2*pi, 0.02) y = ma.sin(x) y1 = sin(2*x) y2 = sin(3*x) ym1 = ma.masked_where(y1 > 0.5, y1) ym2 = ma.masked_where(y2 < -0.5, y2) lines = plot(x, y, 'r', x, ym1, 'g', x, ym2, 'bo') setp(lines[0], linewidth = 4) setp(lines[1], linewidth = 2) setp(lines[2], markersize = 10) legend( ('No mask', 'Masked if > 0.5', 'Masked if < -0.5') , loc = 'upper right') title('Masked line demo') show()
#!/bin/env python ''' Plot lines with points masked out. This would typically be used with gappy data, to break the line at the data gaps. ''' import matplotlib.numerix.npyma as ma from pylab import * x = ma.arange(0, 2 * pi, 0.02) y = ma.sin(x) y1 = sin(2 * x) y2 = sin(3 * x) ym1 = ma.masked_where(y1 > 0.5, y1) ym2 = ma.masked_where(y2 < -0.5, y2) lines = plot(x, y, 'r', x, ym1, 'g', x, ym2, 'bo') setp(lines[0], linewidth=4) setp(lines[1], linewidth=2) setp(lines[2], markersize=10) legend(('No mask', 'Masked if > 0.5', 'Masked if < -0.5'), loc='upper right') title('Masked line demo') show()