.. _pylab_examples-simplification_clipping_test:

pylab_examples example code: simplification_clipping_test.py
============================================================



.. plot:: /tmp/buildd/matplotlib-0.99.3/doc/mpl_examples/pylab_examples/simplification_clipping_test.py

::

    from pylab import *
    import numpy as np
    from matplotlib import patches, path
    nan = np.nan
    Path = path.Path
    
    t = arange(0.0, 2.0, 0.01)
    s = sin(2*pi*t)
    plot(t, s, linewidth=1.0)
    
    ylim((-0.20, -0.28))
    
    title('Should see four lines extending from bottom to top')
    
    figure()
    
    x = np.array([1.0,2.0,3.0,2.0e5])
    y = np.arange(len(x))
    plot(x,y)
    xlim(xmin=2,xmax=6)
    title("Should be monotonically increasing")
    
    figure()
    
    x = np.array([0.0, 1.0, 0.0, -1.0, 0.0])
    y = np.array([1.0, 0.0, -1.0, 0.0, 1.0])
    plot(x, y)
    xlim(xmin=-0.6, xmax=0.6)
    ylim(ymin=-0.6, ymax=0.6)
    title("Diamond shape, with segments visible in all four corners")
    
    figure()
    
    np.random.seed(0)
    x = np.random.uniform(size=(5000,)) * 50
    
    rcParams['path.simplify'] = True
    p1 = plot(x,solid_joinstyle='round',linewidth=2.0)
    
    path = p1[0].get_path()
    transform = p1[0].get_transform()
    path = transform.transform_path(path)
    simplified = list(path.iter_segments(simplify=(800, 600)))
    
    title("Original length: %d, simplified length: %d" % (len(path.vertices), len(simplified)))
    
    figure()
    
    x = np.sin(np.linspace(0, np.pi * 2.0, 1000)) + np.random.uniform(size=(1000,)) * 0.01
    
    rcParams['path.simplify'] = True
    p1 = plot(x,solid_joinstyle='round',linewidth=2.0)
    
    path = p1[0].get_path()
    transform = p1[0].get_transform()
    path = transform.transform_path(path)
    simplified = list(path.iter_segments(simplify=(800, 600)))
    
    title("Original length: %d, simplified length: %d" % (len(path.vertices), len(simplified)))
    
    figure()
    pp1 = patches.PathPatch(
        Path([(0, 0), (1, 0), (1, 1), (nan, 1), (0, 0), (2, 0), (2, 2), (0, 0)],
             [Path.MOVETO, Path.CURVE3, Path.CURVE3, Path.CURVE3, Path.CURVE3, Path.CURVE3, Path.CURVE3, Path.CLOSEPOLY]),
        fc="none")
    
    gca().add_patch(pp1)
    gca().set_xlim((0, 2))
    gca().set_ylim((0, 2))
    title("Should be one line with two curves below it")
    
    show()
    

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