Repositioning Tick labels

It is possible to place Tick labels at positions other than the default using Text. Here is an example of how to move the Tick label on the horizontal axis so they appear above the axis.

A plot

plt = Plot[x,{x,0,2}]

Getting the tick specifications

We will make use of the default Tick positions to create the new tick marks and labels. First we get the Tick specifications from the above plot using AbsoluteOptions.

tks=AbsoluteOptions[plt,Ticks];

Manipulating the Tick labels

This next step involves removing the labels from the existing Ticks and making the marks where the labels appear a little longer than the default. We can do this using ReplacePart.(See the Help Browser for more information about ReplacePart.) If you carefully examine the structure of tks you will understand why we are using tks[[1,2,1]]. This allows us to work with the x-Ticks and not change the y-Ticks.

xTks=Map[If[Head[#[[2]]]===Real,ReplacePart[#,{"",{.01,0}},{{2},{3}},{{1},{2}}],#]&,tks[[1,2,1]]];

New Labels

This next step uses Text to create new labels for our Tick marks. Using Offset allows us to have more control over the position of the labels. Note the position of you axis determines the position of the labels. In this case the axis passes through the origin and so the vertical dimension is zero.

tklbls = Table[Text[PaddedForm[i,{2,1}],Offset[{-2,7},{i,0}]],{i,.5,2,.5}];

Putting things together

You should realize the following is the result of a few repositionings of  the Tick labels. If  you have a complicated plot which takes time to render you may want to use a "fake" plot to get the positions as you want before rendering the final plot.

Plot[x,{x,0,2},Ticks -> {xTks,Automatic},Epilog -> tklbls,PlotRange -> All]