Wie kann ich in einem Barplot in TikZ die Markierungen hinzufügen, die anzeigen, dass ein signifikanter Unterschied besteht? Die Markierungen bestehen oft aus einer vereinfachten Klammer und einem Asterisk (Sternchen). Unten mal ein Beispieldatensatz und eine Abbildung in die ich manuell die entsprechende Markierung (in rot) hinzugefügt habe. Gibt es dafür eine vorgefertigte Lösung oder ist Handarbeit erforderlich? Open in Online-Editor
\documentclass[11pt, border=5mm]{standalone} \usepackage{pgfplots, pgfplotstable} \usetikzlibrary{patterns} \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) }; \addlegendentry{~Experimentalgruppe}; \end{axis} \end{tikzpicture} \end{document} gefragt 15 Feb '15, 15:02 André |
Das Makro Open in Online-Editor
\newcommand\significant[2]{ \draw[purple,thick]([xshift=-\pgfplotbarshift]axis cs:#1,#2) --++(0pt,10pt) --node[above]{$\ast$}++(2*\pgfplotbarshift,0pt) --++(0pt,-10pt); } Da Im folgenden Beispiel wird dann einfach mit Open in Online-Editor
\significant{AufgabeXYZ}{8.5} eine Klammer mit darüber befindlichem Asterisk so bei Code: Open in Online-Editor
\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 Open in Online-Editor
ybar=10pt, bar width=20pt, mit ansonsten gleichem Code 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 Zum einen (Danke an @Clemens) kann man Open in Online-Editor
\significant{Tonh\detokenize{ö}henangabe}{8.5} mit obigem Code, wenn da statt Zum anderen ist es möglich mit voranstehendem Open in Online-Editor
\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 beantwortet 15 Feb '15, 18:20 esdd @esdd: Danke Dir, ebenso wie Thorsten eine echt tolle Lösung! Im Original habe ich aber nicht „AufgabeABC“ sondern „Tonhöhenaufgabe“. Wenn ich das in dem Beispiel hier ersetze, fliegt der Umlaut lediglich raus. Wenn ich das in meinem gesamten Dokument einfüge, erhalte ich einen langen Satz an Fehlermeldungen. Kann man das noch irgendwie anders lösen/umgehen?
(17 Feb '15, 20:21)
André
@Andre Ich habe meine Antwort für den Fall von Umlauten bzw. Sonderzeichen in den Koordinatenangaben, die bei
(17 Feb '15, 21:18)
esdd
1
@esdd Das Umlaut-Problem sieht für mich wie ein Expansionsproblem aus. Interessanterweise verschwindet der Fehler, wenn man
(17 Feb '15, 21:36)
cgnieder
@Clemens Danke, habe ich jetzt in die Antwort übernommen. Bis Version 1.10 musste man das auch für den Plot selbst machen, siehe Sonderzeichen in pgfplot zur Achsenbeschriftung.
(17 Feb '15, 21:50)
esdd
1
@esdd Das Problem hier scheint aber bei TikZ selber zu liegen. Ein Minibeispiel mit TikZ,
(17 Feb '15, 22:10)
cgnieder
|
In solchen mit »pgfplots« erstellten Diagrammen kann für zusätzliche Zeichnungselemente auf das Koordinatensystem des Graphen ( Open in Online-Editor
\documentclass[11pt,border=2pt]{standalone} \usepackage[T1]{fontenc} \usepackage{pgfplots} \usetikzlibrary{patterns} \pgfplotsset{ compat=1.12, xlabel near ticks, ylabel near ticks } \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={Aufgaben}, xtick={1,2}, xticklabels={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 { (1,3.9391) +- (0,0.55421) (2,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 { (1,3.8927) +- (0,1.08049) (2,6.9836) +- (0,1.3073) }; \addlegendentry{~Experimentalgruppe}; \draw[red,thick] (axis cs:1.85,8.75) -- (axis cs:1.85,9) -- (axis cs:2.15,9) node[above,midway] {$\ast$} -- (axis cs:2.15,8.75); \end{axis} \end{tikzpicture} \end{document} Um das Einfügen zu erleichtern, wurden einige Optionen der Umgebung beantwortet 15 Feb '15, 18:02 Thorsten @Thorsten: Danke, tolle Lösung! Mit der Zeile
(17 Feb '15, 20:00)
André
@Andre 1.12 ist die derzeit aktuelle
(17 Feb '15, 20:05)
esdd
|