.. _pylab_examples-manual_axis:

pylab_examples example code: manual_axis.py
===========================================



.. plot:: /build/buildd/matplotlib-0.98.5.2/doc/mpl_examples/pylab_examples/manual_axis.py

::

    """
    matplotlib is fairly rigid about how and where it draws it xaxis and
    yaxis, and it is a frequent request to be able to place these in other
    locations.  While it is not possible to customize matplotlib's
    internal axis objects in this way, it is not too hard to simply turn
    them off and draw your own axis lines, tick lines, and tick labels
    where and how you want them
    """
    
    import numpy as np
    from pylab import figure, show
    import matplotlib.lines as lines
    
    def make_xaxis(ax, yloc, offset=0.05, **props):
        xmin, xmax = ax.get_xlim()
        locs = [loc for loc in ax.xaxis.get_majorticklocs()
                if loc>=xmin and loc<=xmax]
        tickline, = ax.plot(locs, [yloc]*len(locs),linestyle='',
                marker=lines.TICKDOWN, **props)
        axline, = ax.plot([xmin, xmax], [yloc, yloc], **props)
        tickline.set_clip_on(False)
        axline.set_clip_on(False)
        for loc in locs:
            ax.text(loc, yloc-offset, '%1.1f'%loc,
                    horizontalalignment='center',
                    verticalalignment='top')
    
    def make_yaxis(ax, xloc=0, offset=0.05, **props):
        ymin, ymax = ax.get_ylim()
        locs = [loc for loc in ax.yaxis.get_majorticklocs()
                if loc>=ymin and loc<=ymax]
        tickline, = ax.plot([xloc]*len(locs), locs, linestyle='',
                marker=lines.TICKLEFT, **props)
        axline, = ax.plot([xloc, xloc], [ymin, ymax], **props)
        tickline.set_clip_on(False)
        axline.set_clip_on(False)
    
        for loc in locs:
            ax.text(xloc-offset, loc, '%1.1f'%loc,
                    verticalalignment='center',
                    horizontalalignment='right')
    
    
    props = dict(color='black', linewidth=2, markeredgewidth=2)
    x = np.arange(200.)
    y = np.sin(2*np.pi*x/200.) + np.random.rand(200)-0.5
    fig = figure(facecolor='white')
    ax = fig.add_subplot(111, frame_on=False)
    ax.axison = False
    ax.plot(x, y, 'd', markersize=8, markerfacecolor='blue')
    ax.set_xlim(0, 200)
    ax.set_ylim(-1.5, 1.5)
    make_xaxis(ax, 0, offset=0.1, **props)
    make_yaxis(ax, 0, offset=5, **props)
    
    show()
    
    

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