# error bars with pgfplots in foreground

I am plotting with pgfplots a plot with error bars with the following code:

\documentclass[12pt,twoside, a4paper]{report}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.6}

\begin{document}

\begin{tikzpicture}
\begin{axis}[xmin=0,xmax=5,ymin=0,ymax=4,
enlargelimits=false,axis on top=true,xlabel=$x$,ylabel=$y$]
plot[/pgfplots/error bars/.cd,x dir=none,y dir=both,y explicit,
error mark=-,error bar style={color=blue}]
table[x=xValue1,y=yValue1, y error=Deltay1] {TableForErrorBarQuestion.txt};
plot[/pgfplots/error bars/.cd,x dir=none,y dir=both,y explicit,
error mark=-,error bar style={color=red}]
table[x=xValue2,y=yValue2, y error=Deltay2] {TableForErrorBarQuestion.txt};
\end{axis}
\end{tikzpicture}

\end{document}


As you can see from the screenshot, this works quite fine.

But I want to have all parts of my red error bars in the foreground (on the top layer). I thought this would work if I add my red data points after the blue one in the code – but unfortunately this does not work. I would be happy if someone of you could give me a hint!

Here is the data I am using in my example.

xValue1 yValue1     Deltay1         xValue2 yValue2     Deltay2
1       1.918332609 1.048808848     1       1.818332609 0.524404424
2       1.886796226 1.048808848     2       1.386796226 0.524404424
3       1.954482029 1.048808848     3       1.854482029 0.524404424
4       1.939071943 1.048808848     4       1.839071943 0.524404424

-
Thanks for editing my question! It is great that one can copy the data directly from here now. –  partial81 Nov 8 '12 at 21:36

By default, all the markers are drawn in one layer on top of the plots. This is done so clipping for them can be switched on or off independently from the normal clipping. You can tell PGFPlots to use an individual layer for each set of markers, instead of putting them all on the same topmost layer, by setting clip mode=individual. This means that later plots will be drawn on top of the preceding markers, which is what you want in this case:

\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.6}

\begin{filecontents}{TableForErrorBarQuestion.txt}
xValue1 yValue1 Deltay1     xValue2 yValue2 Deltay2
1   1.918332609 1.048808848     1   1.818332609 0.524404424
2   1.886796226 1.048808848     2   1.386796226 0.524404424
3   1.954482029 1.048808848     3   1.854482029 0.524404424
4   1.939071943 1.048808848     4   1.839071943 0.524404424
\end{filecontents}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
clip mode=individual,
xmin=0,xmax=5,ymin=0,ymax=4,
enlargelimits=false,
axis on top=true,
xlabel=$x$, ylabel=$y$
]
color=blue,
thick,
only marks,
mark=*,
/pgfplots/error bars/.cd,
x dir=none,
y dir=both,
y explicit
] table [
x=xValue1,
y=yValue1,
y error=Deltay1
] {TableForErrorBarQuestion.txt};

color=red,
thick,
only marks,
mark=*,
/pgfplots/error bars/.cd,
x dir=none,
y dir=both,
y explicit
] table [
x=xValue2,
y=yValue2,
y error=Deltay2
] {TableForErrorBarQuestion.txt};
\end{axis}
\end{tikzpicture}

\end{document}

-
Thanks a lot for this well working solution and for the detailed explanation! –  partial81 Nov 8 '12 at 21:35