Um zu verhindern, dass die Subserie 2 auf die Subserie 1 gesetzt wird, kann man jede in eine eigene axis
Umgebungen setzen. Mit der Option bar shift
kann man die erste Subserie etwas nach links und die zweite etwas nach rechts verschieben, so dass beide Subserien nebeneinandar dargestellt werden. Damit die beiden axis
-Umgebungen die gleichen Einteilungen an den Koordinatenachsen verwenden, gibt man diese einheitlich für beide vor.
\documentclass[margin=5mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}
\begin{filecontents}{serieA.dat}
#subserie x y
1 10 90
2 20 80
\end{filecontents}
\begin{filecontents}{serieB.dat}
#subserie x y
1 70 30
2 25 75
\end{filecontents}
\colorlet{xcolor}{red}
\colorlet{ycolor}{blue}
\begin{document}
\begin{tikzpicture}
\pgfplotsset{ybar stacked,ymin=0,ymax=100,xmin=0.5,xmax=2.5,xtick=data}
\begin{axis}[bar shift=-8pt]
\addplot [fill=xcolor] table [x index=0,y index=1] {serieA.dat};
\addplot [fill=ycolor] table [x index=0,y index=2] {serieA.dat};
\end{axis}
\begin{axis}[bar shift=8pt]
\addplot [fill=xcolor] table [x index=0,y index=1] {serieB.dat};
\addplot [fill=ycolor] table [x index=0,y index=2] {serieB.dat};
\end{axis}
\end{tikzpicture}
\end{document}
Außerdem ist es vielleicht sinnvoll für die beiden Subserien verschiedene Farben zu definieren und Legenden einzufügen. Wenn man für die Legende der ersten Subserie die Option name
nutzt, dann kann die Legende der zweiten einfach an dieser ausgerichtet werden.
\documentclass[margin=5mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}
\usetikzlibrary{fit}
\begin{filecontents}{serieA.dat}
#subserie x y
1 10 90
2 20 80
\end{filecontents}
\begin{filecontents}{serieB.dat}
#subserie x y
1 70 30
2 25 75
\end{filecontents}
\colorlet{xcolorA}{red}\colorlet{xcolorB}{orange}
\colorlet{ycolorA}{blue}\colorlet{ycolorB}{blue!50!red}
\begin{document}
\begin{tikzpicture}
\pgfplotsset{ybar stacked,ymin=0,ymax=100,xmin=0.5,xmax=2.5,xtick=data}
\begin{axis}[bar shift=-8pt,
legend pos=outer north east,legend style={name=serieA}]
\addplot [fill=xcolorA] table [x index=0,y index=1] {serieA.dat};
\addplot [fill=ycolorA] table [x index=0,y index=2] {serieA.dat};
\legend{x (Serie A),y (Serie A)}
\end{axis}
\begin{axis}[bar shift=8pt,
legend style={at={([yshift=-1mm]serieA.south west)},anchor=north west}]
\addplot [fill=xcolorB] table [x index=0,y index=1] {serieB.dat};
\addplot [fill=ycolorB] table [x index=0,y index=2] {serieB.dat};
\legend{x (Serie B),y (Serie B)}
\end{axis}
\end{tikzpicture}
\end{document}
beantwortet
08 Nov '13, 10:46
esdd
17.8k●28●42●57
Akzeptiert-Rate:
62%