graphs

That I don't know. The Agg renderer certainly can do

    > a nice job with gradients, but I don't know if MPL
    > support that.

You can emulate gradients using matplotlib images -- either with colormaps or
defining your own rgba endpoints for the gradients. Here's an example
of an axes background gradient

    from pylab import figure, show, nx, cm

    fig = figure()

    xmin, xmax = xlim = 0,2
    ymin, ymax = ylim = -1,1
    ax = fig.add_subplot(111, xlim=xlim, ylim=ylim,
    autoscale_on=False)
    X = [[.6, .6],[.7,.7]]

    ax.imshow(X, interpolation='bicubic', cmap=cm.Blues,
              extent=(xmin, xmax, ymin, ymax), alpha=1)
    t = nx.arange(xmin, xmax,0.01)
    ax.plot(t, nx.sin(2*nx.pi*t), lw=2, color='black')
    show()

Likewise, you can make your own gradient bars charts:

    from pylab import figure, show, nx, cm

    def gbar(ax, x, y, width=0.5, bottom=0):
        X = [[.6, .6],[.7,.7]]
        for left,top in zip(x, y):
            right = left+width
            ax.imshow(X, interpolation='bicubic', cmap=cm.Blues,
                      extent=(left, right, bottom, top), alpha=1)

    fig = figure()

    xmin, xmax = xlim = 0,10
    ymin, ymax = ylim = 0,1
    ax = fig.add_subplot(111, xlim=xlim, ylim=ylim,
                         autoscale_on=False)
    X = [[.6, .6],[.7,.7]]

    ax.imshow(X, interpolation='bicubic', cmap=cm.copper,
              extent=(xmin, xmax, ymin, ymax), alpha=1)

    N = 10
    x = nx.arange(N)+0.25
    y = nx.mlab.rand(N)
    gbar(ax, x, y, width=0.7)
    ax.set_aspect('normal')
    show()

Viewer discretion is advised.

If you want to get clever, you can define patterns and fills this way
too. We should add an interface to expose this functionality more
readily...

JDH