.. _pylab_examples-contourf_demo:

pylab_examples example code: contourf_demo.py
=============================================



.. plot:: /home/mandrake/rpm/BUILD/matplotlib-0.99.3/doc/mpl_examples/pylab_examples/contourf_demo.py

::

    #!/usr/bin/env python
    from pylab import *
    origin = 'lower'
    #origin = 'upper'
    
    # The following controls only interior masking.
    test_masking = False  # There is a bug in filled contour masking with
                          # interior masks.
    
    if test_masking:
        # Use a coarse grid so only a few masked points are needed.
        delta = 0.5
    else:
        delta = 0.025
    
    x = y = arange(-3.0, 3.01, delta)
    X, Y = meshgrid(x, y)
    Z1 = bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
    Z2 = bivariate_normal(X, Y, 1.5, 0.5, 1, 1)
    Z = 10 * (Z1 - Z2)
    
    # interior badmask doesn't work yet for filled contours
    if test_masking:
        badmask = zeros(shape(Z))
    
        badmask[5,5] = 1
        badmask[5,6] = 1
        Z[5,5] = 0
        Z[5,6] = 0
    
        badmask[0,0] = 1
        Z[0,0] = 0
        Z = ma.array(Z, mask=badmask)
    
    nr, nc = Z.shape
    
    # put NaNs in one corner:
    Z[-nr//6:, -nc//6:] = nan
    # contourf will convert these to masked
    
    
    Z = ma.array(Z)
    # mask another corner:
    Z[:nr//6, :nc//6] = ma.masked
    
    
    # We are using automatic selection of contour levels;
    # this is usually not such a good idea, because they don't
    # occur on nice boundaries, but we do it here for purposes
    # of illustration.
    CS = contourf(X, Y, Z, 10, # [-1, -0.1, 0, 0.1],
                            #alpha=0.5,
                            cmap=cm.bone,
                            origin=origin)
    
    # Note that in the following, we explicitly pass in a subset of
    # the contour levels used for the filled contours.  Alternatively,
    # We could pass in additional levels to provide extra resolution.
    
    CS2 = contour(X, Y, Z, CS.levels[::2],
                            colors = 'r',
                            origin=origin,
                            hold='on')
    
    title('Nonsense (with 2 masked corners)')
    xlabel('word length anomaly')
    ylabel('sentence length anomaly')
    
    # Make a colorbar for the ContourSet returned by the contourf call.
    cbar = colorbar(CS)
    cbar.ax.set_ylabel('verbosity coefficient')
    # Add the contour line levels to the colorbar
    cbar.add_lines(CS2)
    
    figure()
    
    # Now make a contour plot with the levels specified,
    # and with the colormap generated automatically from a list
    # of colors.
    levels = [-2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5]
    CS3 = contourf(X, Y, Z, levels,
                            colors = ('r', 'g', 'b'),
                            origin=origin)
    
    CS4 = contour(X, Y, Z, levels,
                           colors = ('k',),
                           linewidths = (3,),
                           origin = origin)
    title('Listed colors (with 2 masked corners)')
    clabel(CS4, fmt = '%2.1f', colors = 'w', fontsize=14)
    colorbar(CS3)
    
    show()
    
    

Keywords: python, matplotlib, pylab, example, codex (see :ref:`how-to-search-examples`)