mehrteiliges Säulendiagramm mit pgfplots Säulen beschriften

Tabellen und Grafiken erstellen und anordnen


BineMaja

mehrteiliges Säulendiagramm mit pgfplots Säulen beschriften

Beitrag von BineMaja »

Hey ihr Lieben,

ich bin ein totaler Neuling in Sachen LaTex und versuche darauf meine Bachelor-Arbeit zu schreiben.
Hier würde ich gern ein (Säulen)Diagramm einfügen, dass aus mehreren Säulen nebeneinander und jeweils zwei aufeinander bestehen.
Das hat bisher auch ganz gut geklappt :)

Mein Problem ist nur, dass ich die Balken gern beschriften würde mit ihrem Wert, dank /nodes near coords geht das auch sehr gut. Allerdings schreibt es mir den aufsummierten Wert des Balkens und nicht für den oberen Balken den eigenen Wert. (Ich hoffe diese Beschreibung ist einigermaßen Verständlich, im Bsp. würde das bedeutet, dass der zweite Balken mit 1, 2, 3 beschriftet wäre...)
Habt ihr eine Idee wie ich das ändern könnte?

Hier mein bisheriger Code mit sehr einfachen Werten:
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ybar stacked, nodes near coords, 
xlabel=blub,
ylabel=bla
]
\addplot coordinates	%erste Reihe Balken
{(0,1) (1,1) (2,3) };
\addplot coordinates	%zweite Reihe Balken
{(0,1) (1,2) (2,3) };
\addplot coordinates	%dritte Reihe Balken
{(0,1) (1,3) (2,3) };
\end{axis}
\end{tikzpicture}
achja, ich habe die Packages pgfplots, graphix und tikzp verwendet

Schon jetzt ein riesiges Dankeschön für eure Hilfe :)

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Hallo,

vermutlich suchst du die Option point meta=rawy
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\begin{document} 
\begin{tikzpicture} 
\begin{axis}[ybar stacked,nodes near coords,
   point meta=rawy,
   xlabel=blub,ylabel=bla] 
\addplot coordinates{(0,1) (1,1) (2,3) }; 
\addplot coordinates{(0,1) (1,2) (2,3) }; 
\addplot coordinates{(0,1) (1,3) (2,3) }; 
\end{axis} 
\end{tikzpicture}
\end{document}
Gruß
Elke

BineMaja

Beitrag von BineMaja »

Hey,

dankeschön. Genau das hab ich gesucht :)

Steh jetzt allerdings wieder vor einem neuen Problem, vielleicht kannst du mir da auch helfen?

Würde gerne beim Diagramm nur jeweils eine Achse links und am Boden haben. Hab dafür auch schon die richtige Option gefunden, nämlich "axis x line=bottom, axis y line=left". Leider verschieben sich die Balken dann, der Linke so, dass er auf der Achse liegt. Weißt du wie man das beheben könnte?
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\begin{document}
\begin{tikzpicture}
\begin{axis}[ybar stacked,nodes near coords,
   point meta=rawy, axis x line=bottom, axis y line=left,
   xlabel=blub,ylabel=bla]
\addplot coordinates{(0,1) (1,1) (2,3) };
\addplot coordinates{(0,1) (1,2) (2,3) };
\addplot coordinates{(0,1) (1,3) (2,3) };
\end{axis}
\end{tikzpicture}
\end{document}
Und hab auch noch eine Formatierungsfrage.
Meine Koordinaten sind Jahreszahlen, also zum Beispiel 2009, leider spuckt es mir die immer als Dezimalzahl, also 2,009 aus. Weißt du da Rat?

Wär dir echt mega dankbar!
Hab leider selbst keine Lösung gefunden.

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Hallo,

steht eigentlich alles in der Dokumentation zu pgfplots.

Eine Möglichkeit ist
\documentclass{standalone} 
\usepackage{pgfplots} 
\pgfplotsset{compat=1.8} 
\begin{document} 
\begin{tikzpicture} 
\begin{axis}[ybar stacked,% Balken gestapelt
    % ursprüngliche y-Werte unterhalb der Balken:
    nodes near coords,nodes near coords align=below,point meta=rawy,
    axis x line=bottom, axis y line=left,% Achsen nur unten und links,
    xlabel=blub,ylabel=bla, % Beschriftung der Achsen
    ymin=0,% minimaler y-Wert ist 0
    xtick=data,% xticks nur an Stellen mit Daten
    enlargelimits=auto,% Vergrößern der Ränder des Diagramms
    % Ausgabe der x Werte ohne Tausendermarkierung@
    x tick label style={/pgf/number format/1000 sep=}
    ] 
\addplot coordinates{(2009,1) (2010,1) (2011,3) }; 
\addplot coordinates{(2009,1) (2010,2) (2011,3) }; 
\addplot coordinates{(2009,1) (2010,3) (2011,3) }; 
\end{axis} 
\end{tikzpicture} 
\end{document}
Statt x tick label style={/pgf/number format/1000 sep=} kann man auch
symbolic x coords={2009,2010,2011}
nutzen. Damit wären auch Texte als Koordinaten möglich.

Gruß
Elke

BineMaja

Beitrag von BineMaja »

Ganz ganz lieben Dank!

Hat super funktioniert und jetzt sieht das Diagramm endlich so aus wie es soll :)

Antworten