You could use PGFplots for this. To get a second x-axis, you have to overlay the original plot with a second one of equal dimension that contains only the secondary axis. I've written a style called master axis that calculates and saves the equivalent horizontal dimensions needed for the secondary axis, which in turn uses the style secondary axis to read and set the dimensions.

\documentclass{article}
\usepackage{pgfplots}
\usepackage{siunitx} % For typesetting of units
\pgfplotsset{compat=newest}
\pgfkeys{/pgfplots/.cd,master axis/.style={
scale only axis,
enlarge x limits=false,
x dir=reverse,axis x line*=bottom,
xticklabel shift=3pt,
after end axis/.code={
\pgfkeys{/pgf/fpu=true,/pgf/fpu/output format=fixed}
\pgfmathparse{\pgfkeysvalueof{/pgfplots/xmin}}
\global\let\masterxmin=\pgfmathresult
\pgfmathparse{\pgfkeysvalueof{/pgfplots/xmax}}
\global\let\masterxmax=\pgfmathresult
\pgfkeys{/pgf/fpu=false}
}
},
slave axis/.style={
scale only axis,enlarge x limits=false,
x dir=reverse,
axis x line*=top,
axis y line=none,
xmin=\masterxmin,xmax=\masterxmax,ymin=0,ymax=1,
scaled x ticks=false,
xtick={100,400,1000,2000,4000,10000},
xticklabel={
\pgfkeys{/pgf/fpu}
\pgfmathparse{1e7/\tick}
\pgfmathprintnumber{\pgfmathresult}
}
}
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[master axis,
ymin=0,ymax=100,
xmin=400,xmax=4000,
enlarge x limits=false, yticklabel={\SI[round-mode=places,round-precision=0]{\tick}{\percent}}, xlabel=Wavenumber / \si{\per\centi\metre},
ylabel=Transmissivity
]
\addplot[domain=400:4000,samples=100,thick]{-(abs(tan(x/10))-2*rnd)+90};
\end{axis}
\begin{axis}[slave axis,xlabel=Wavelength / \si{\nano\metre}]\end{axis}
\end{tikzpicture}
\end{document}
\begin{axis}[slave axis,xmin=\masterxmin,xmax=\masterxmax,ymin=0,ymax=1, xlabel=Wavelength / \si{\nano\metre}]\end{axis}so thanks for your help and I have accepted the answer – Leeser May 26 '11 at 11:07xminandxmaxexplicitly. – Jake May 30 '12 at 10:57