Das Makro `\pgfplotbarshift` enthält die Verschiebung der Balken gegenüber der eigentlichen Koordinate. Damit lässt sich dann ein Makro für das Einfügen solcher Klammern in `axis` Umgebungen definieren, das als Argumente zum einen die gemeinsame `x-Koordinate` der Balken und zum anderen die `y-Koordinate` für die unteren Enden der Klammer erwartet.
\newcommand\significant[2]{
\draw[purple,thick]([xshift=-\pgfplotbarshift]axis cs:#1,#2)
--++(0pt,10pt)
--node[above]{$\ast$}++(2*\pgfplotbarshift,0pt)
--++(0pt,-10pt);
}
Da `axis cs` explizit angegeben ist, können in beiden Argumenten auch die definierten symbolischen Werte der Koordinaten angegeben werden.
Im folgenden Beispiel wird dann einfach mit
\significant{AufgabeXYZ}{8.5}
eine Klammer mit darüber befindlichem Asterisk so bei `AufgabeXYZ` eingefügt, dass sich deren untere Enden auf der Höhe des y-Wertes 8.5 befinden.
![alt text][1]
Code:
\documentclass[11pt, border=5mm]{standalone}
\usepackage{pgfplots, pgfplotstable}
\pgfplotsset{compat=newest}
\usetikzlibrary{patterns}
\newcommand\significant[2]{
\draw[purple,thick]([xshift=-\pgfplotbarshift]axis cs:#1,#2)
--++(0pt,10pt)
--node[above]{$\ast$}++(2*\pgfplotbarshift,0pt)
--++(0pt,-10pt);
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
width=11cm,
height=8.5cm,
ybar=0pt,
bar width=40pt,
enlarge x limits=0.5,
legend style={at={(0.05,0.95)},anchor=north west,draw=none},
legend cell align=left,
xlabel={Aufgabe},
xtick={data},
symbolic x coords={AufgabeABC,AufgabeXYZ},
ymin=2.5,
ymax=9.5,
ylabel={Messwert},
ytick={3,4,...,9}
]
\addplot[black,fill=lightgray,error bars/.cd,y dir=both,y explicit] coordinates {
(AufgabeABC,3.9391) +- (0,0.55421)
(AufgabeXYZ,5.6836) +- (0,0.89612)
};
\addlegendentry{~Kontrollgruppe};
\addplot[black,fill=white,postaction={pattern=north east lines,pattern color=gray},error bars/.cd,y dir=both,y explicit] coordinates {
(AufgabeABC,3.8927) +- (0,1.08049)
(AufgabeXYZ,6.9836) +- (0,1.3073)
};
\significant{AufgabeXYZ}{8.5}
\addlegendentry{~Experimentalgruppe};
\end{axis}
\end{tikzpicture}
\end{document}
Verwendet man jetzt für `ybar` und/oder `bar width` andere Werte, passt sich die Klammer automatisch an. Zum Beispiel liefern
ybar=10pt,
bar width=20pt,
mit ansonsten gleichem Code
![alt text][2]
----------
**Umlaute in den symbolischen Koordinaten**
Damit Umlaute einfach in den symbolischen Koordinaten für die Achsen und den Plot verwendet werden können, wird mindestens Version 1.11 benötigt. Leider scheinen die Umlaute aber selbst mit Version 1.12 nicht für Koordinatenangaben bei `\draw` zu funktionieren. Deshalb muss in dem Fall Es gibt zwei Möglichkeiten trotzdem Umlaute zu nutzen.
Zum einen (Danke an @Clemens) kann man [`\detokenize`][3] beim Aufruf von `\significant` verwenden, also
\significant{Tonh\detokenize{ö}henangabe}{8.5}
mit obigem Code, wenn da statt `AufgabeXYZ` der Wert `Tonhöhenangabe` steht.
Zum anderen ist es möglich mit voranstehendem `[normalize]` die Nummer der Koordinate mit davor stehendem `[normalize]` angegeben werden und zu verwenden. Dann muss bei der Definition des Befehles `\significant` das `#1` zusätzlich in geschweifte Klammern gesetzt werden. Zu beachten ist, dass die Nummerierung der Koordinaten bei `0` beginnt.
\documentclass[11pt, border=5mm]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{pgfplots, pgfplotstable}
\pgfplotsset{compat=1.11}
\usetikzlibrary{patterns}
\newcommand\significant[2]{
\draw[purple,thick]([xshift=-\pgfplotbarshift]axis cs:{#1},#2)
--++(0pt,10pt)
--node[above]{$\ast$}++(2*\pgfplotbarshift,0pt)
--++(0pt,-10pt);
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
width=11cm,
height=8.5cm,
ybar=0pt,
bar width=40pt,
enlarge x limits=0.5,
legend style={at={(0.05,0.95)},anchor=north west,draw=none},
legend cell align=left,
xlabel={Aufgabe},
xtick={data},
symbolic x coords={AufgabeABC,Tonhöhenangabe},
ymin=2.5,
ymax=9.5,
ylabel={Messwert},
ytick={3,4,...,9}
]
\addplot[black,fill=lightgray,error bars/.cd,y dir=both,y explicit] coordinates {
(AufgabeABC,3.9391) +- (0,0.55421)
(Tonhöhenangabe,5.6836) +- (0,0.89612)
};
\addlegendentry{~Kontrollgruppe};
\addplot[black,fill=white,postaction={pattern=north east lines,pattern color=gray},error bars/.cd,y dir=both,y explicit] coordinates {
(AufgabeABC,3.8927) +- (0,1.08049)
(Tonhöhenangabe,6.9836) +- (0,1.3073)
};
\significant{[normalized]1}{8.5}
\addlegendentry{~Experimentalgruppe};
\end{axis}
\end{tikzpicture}
\end{document}
Wenn man die Klammer bei `AufgabeABC` setzen möchte, könnte man weiterhin direkt die symbolische Koordinate nutzen, also zum Beispiel `\significant{AufgabeABC}{5.25}`.
[1]: http://texwelt.de/wissen/upfiles/tw_significant_1.png
[2]: http://texwelt.de/wissen/upfiles/tw_significant1.pnghttp://texwelt.de/wissen/upfiles/tw_significant1.png
[3]: http://texwelt.de/wissen/fragen/1893/was-macht-der-befehl-detokenize/1894