Yo,

1) multiple y-scales on the left and right. mpl supports a left and

right scale (see examples/two_scale.py) but nothing like an

arbitrary number of scales with arbitrary positioning as you see

in the plot you attached. This has long been on the wish list

(and is on the goals web page) but has not yet been implemented.

This is something chaco does quite well because it is very common

to make these plots in geophysics. For me it is one of the few

remaining must-have features for matplotlib 1.0. You could hack

your own scales using matplotlib lines and text instances. Indeed

it wouldn't be too hard and if I get some time I'll do a demo

which may serve as a prototype for refactoring the mpl axis code.

I remember that, for a paper, I succeeded to plot two horizontal axis, on the bottom of the plot (see the image in attachment)

The difference with my previous mail is that the second axis (labeled 'compression ratio') is not used for plotting. It is, actually, the same than the other axis (labeled 'filter size') but it gives another scale/kind of information.

Here is my (very ugly) code:

from pylab import *

from matplotlib.font_manager import *

list = [0.78125356, 0.78125356, 0.78125356, 0.78125356, 0.78125356, 0.78125356, 0.78125356, 0.78125356, 0.78125356, 0.78125356]

yprops = dict(rotation=0, horizontalalignment='right',verticalalignment='center',x=-0.01)

axprops = dict(yticks=[])

rc('text', usetex=True)

rc('lines', markersize=16)

rc('legend', numpoints=3)

#getting data from different source files

tabBF = load('Data/Compact/BFCompact.dat')

tabRBF1 = load('Data/Compact/RBFCompact0.01.dat')

tabRBF2 = load('Data/Compact/RBFCompact0.25.dat')

tabRBF3 = load('Data/Compact/RBFCompact0.05.dat')

tabRBF4 = load('Data/Compact/RBFCompact0.1.dat')

xAxis = tabBF[:,0]

succBF = tabBF[:,1]

succRBF1 = tabRBF1[:,1]

succRBF2 = tabRBF2[:,1]

succRBF3 = tabRBF3[:,1]

succRBF4 = tabRBF4[:,1]

fig = figure(1)

#plot the figure

ax1 = fig.add_axes([0.1,0.2,0.8,0.75])

llist = ax1.plot(xAxis, list, 'k-', linewidth=1.5)

bf = ax1.plot(xAxis, succBF, 'k-x', linewidth=1.5)

rbf1 = ax1.plot(xAxis, succRBF1, 'r-d', linewidth=1.5)

rbf2 = ax1.plot(xAxis, succRBF2, 'b-^', linewidth=1.5)

rbf3 = ax1.plot(xAxis, succRBF3, 'g-<', linewidth=1.5)

rbf4 = ax1.plot(xAxis, succRBF4, 'm-o', linewidth=1.5)

axis([9, 101, -0.01, 1.01], font)

ax1.set_xlabel(r'\textbf{filter size (x 10}$^\mathbf{3}$\textbf{)}', font)

ax1.set_ylabel(r'\textbf{success rate}', font)

#ugly way of drawing the legend legend

leg = legend((llist[0], rbf2[0],rbf4[0], rbf3[0], rbf1[0], bf[0]),(r'\textbf{list}', r'\textbf{rbf -} $\beta$\textbf{=25\%}', r'\textbf{rbf -} $\beta$\textbf{=10\%}',r'\textbf{rbf - }$\beta$\textbf{=5\%}', r'\textbf{rbf - }$\beta$\textbf{=1\%}', r'\textbf{bf}'), loc=(0.65,0.23), prop=FontProperties(size='26', weight='bold'))#leg = legend((llist[0], bf[0]), (r'\textbf{list}', r'\textbf{bf}'), loc=(0.65,0.23), prop=FontProperties(size='26', weight='bold'))

leg.draw_frame(False)

#draw the second x-axis

ax2 = fig.add_axes([0.1,0.1,0.8,0.01], **axprops)

ax2.set_xlabel(r'\textbf{compression ratio}', font)

toto = ['25.6', '12.8', '8.5', '6.4', '5.1', '4.2', '3.6', '3.2', '2.8', '2.5']

ax2.get_xaxis().set_ticks(arange(10))

ax2.get_xaxis().set_ticklabels(toto)

savefig('Success3')

This is clearly a hack (and I'm not very proud of it ).

Benoit