see http://matplotlib.1069221.n5.nabble.com/cmap-set-bad-not-showing-any-effect-with-pcolor-td27530.html
On Dec 1, 2013, at 10:11 AM, lin.h...@europe.com wrote: > Hi, > > I m trying to plot some data with pcolor. The data should be plotted on a > ring. Inside and outside of the ring should be white area. However, now I > have black area. Where is my mistake? Minimal working example: > > from matplotlib import cm > import matplotlib.pyplot as plt > from pylab import * > > import numpy as np > import scipy as sp > > X = np.arange(-1.0, 1.01, 0.01) > Y = np.arange(-1.0, 1.01, 0.01) > X, Y = np.meshgrid(X, Y) > > [r, R] = [0.25, 1.0] > an = sp.linspace(0,2*sp.pi,100) > > fig = plt.figure(1, figsize=(6,6)) > > ax = fig.add_subplot(111, aspect = 'equal') > Z = X**2 + Y**2 > Z[(X**2+Y**2 < r**2) | (X**2+Y**2 > R**2)] = np.ma.masked > cm.hot.set_bad('white', alpha=None) > plot = pcolor(X, Y, Z, cmap=cm.hot) I think part of the problem is that Z is not a masked_array. This works for me. I set_bad to green to show the effect. Z = np.ma.masked_array(X**2 + Y**2, mask = (X**2+Y**2 <= r**2) | (X**2+Y**2 > R**2)) cm.hot.set_bad('green', alpha=None) plot = pcolormesh(X, Y, Z, cmap=cm.hot) > plt.plot(r*sp.cos(an), r*sp.sin(an), 'k') > plt.plot(R*sp.cos(an), R*sp.sin(an), 'k') > axis([-1.0, 1.0, -1.0, 1.0]) > > plt.show() ------------------------------------------------------------------------------ Rapidly troubleshoot problems before they affect your business. Most IT organizations don't have a clear picture of how application performance affects their revenue. With AppDynamics, you get 100% visibility into your Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro! http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users