Folks, I was trying to use an object oriented approach to creating
colorbars, but I could manage to make it work. Currently I have close
to what I am trying to achieve, but the last bits are missing. The
outstanding issues are:

1) I only need one colorbar, how would I create a single colorbar on
the right that spanned across all axes? (ie. same height as the stack)
2) is there a way to place the colorbar in the bottom middle of my
panels (if I end up with more than one)?
3) How can I customize the tick labels of the colorbar?
4) Is this a 'pythonic' approach to begin with?

Here's my code, and a fake class that should provide the data needed
to use the example:

#!/usr/bin/env python

"""
Demo to help understand plotting tools
"""
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

class Fun(object):
    """ Dummy class for testing
    """

    class body:
        pass

    def __init__(self):

        body = Fun.body
        body.time = np.arange(1000)
        body.alt = np.sin(body.time)
        body.A = 360*np.random.random_sample(1000)-180
        body.B = 180*np.random.random_sample(1000)-90
        body.C = 90*np.random.random_sample(1000)-45


def plot_angles(F):
    """ Plots the angles of body """

    from mpl_toolkits.axes_grid1.inset_locator import inset_axes

    # Set up plotting environment colors
    Nc = np.arange(-180,181,1)
    norm = mpl.colors.normalize(Nc.min(),Nc.max())

    fig, (ax1, ax2, ax3) = plt.subplots(3, sharex=True, sharey=True)

    
ax1.scatter(F.body.time,F.body.alt,c=F.body.A,norm=norm,label='A',edgecolor='none')

    
ax2.scatter(F.body.time,F.body.alt,c=F.body.B,norm=norm,label='B',edgecolor='none')

    
ax3.scatter(F.body.time,F.body.alt,c=F.body.C,norm=norm,label='C',edgecolor='none')

    # Fine-tune figure; make subplots close to each other and hide x ticks for
    # all but bottom plot.
    fig.subplots_adjust(hspace=0)
    plt.setp([a.get_xticklabels() for a in fig.axes[:-1]], visible=False)
    for a in fig.axes:
        ia = inset_axes(a,width="20%", height="5%", loc=4)
        a.set_xlim(F.body.time[0],F.body.time[-1])
        fig.add_subplot(a)
        plt.colorbar(a.collections[0],cax=ia,orientation='horizontal')
        ia.xaxis.set_ticks_position("top")

    plt.draw()

    return fig


def demo():

    F = Fun()
    plot_angles(F)

if __name__ == "__main__":
    fig = demo()
    plt.show()

------------------------------------------------------------------------------
Beautiful is writing same markup. Internet Explorer 9 supports
standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2 & L3.
Spend less time writing and  rewriting code and more time creating great
experiences on the web. Be a part of the beta today
http://p.sf.net/sfu/msIE9-sfdev2dev
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to