Seite 1 von 1

Säulendiagramm mit tikzpicture, Achsenbeschriftung variieren

Verfasst: So 26. Jan 2014, 16:50
von phil_90026
Hallo,

ich bräuchte heute für die letzten Anpassungen meiner BA eure Hilfe.

Mit tikzpicture habe ich ein Säulendiagramm erstellt (siehe Beispiel unten). An der x-Achse sind die Jahre und auf der y-Achse die Werte. Der Abstand der Werte auf der y-Achse sind sehr groß, bei mir 0 - 50 - 100 - 150. Ich möchte sie jedoch manuell einstellen, in 10er oder 20er Schritte. Des Weiteren sollen die Werte auf der y-Achse nicht nur links, sondern auch rechts am Diagramm erscheinen.

Kann mir da jemand weiter helfen?

Vielen Dank!

Gruß Philipp
\documentclass[10pt,oneside]{scrreprt}

\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{lmodern}
\usepackage{array}
\usepackage{geometry}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}

\geometry{a4paper}	

\begin{document}

\begin{figure}[H]
	\centering
\begin{tikzpicture}
\begin{axis}[
x tick label style={
/pgf/number format/1000 sep=},
ylabel=Mio. t,
enlargelimits=0.05,
legend style={at={(0.5,-0.2)},
anchor=north,legend columns=-1},
x tick label style ={rotate=45,anchor=east},
ybar interval=0.7,
height=6cm,
width=12cm,
]
\addplot coordinates {(2002,115)(2003,116)(2004,124)(2005,129)(2006,135)(2007,139)(2008,142)(2009,147)(2010,150)(2011,155)(2012,100)};
\addplot coordinates {(2002,33)(2003,35)(2004,3)(2005,40)(2006,3)(2007,43)(2008,43)(2009,41)(2010,43)(2011,45)(2012,100)};
\addplot coordinates {(2002,0)(2003,0)(2004,0)(2005,0)(2006,0)(2007,0)(2008,93.6)(2009,94.07)(2010,96.46)(2011,96.7)(2012,100)};
\legend{Auswahl 1,Auswahl 2,Auswahl 3}
\end{axis}
\end{tikzpicture}
\end{figure}

\end{document}
[/code]

Verfasst: So 26. Jan 2014, 18:00
von localghost
Das erste Problem ist schnell erledigt, wenn man in der Anleitung zu pgfplots nach dem Schlüssel xtick sucht und dort dann dessen Beschreibung nachliest.

Für die Beschriftung der y-Achse rechts muss man im Prinzip ein zweites Koordinatensystem erstellen und die nicht benötigten Teile verstecken. Da sich 'pgfplots' aber mit einer Warnung über ein leeres (zweites) Koordinatensystem beschwert, ist noch ein unsichtbarer Plot untergebracht.
\documentclass[11pt]{article}
\usepackage[T1]{fontenc}
\usepackage{pgfplots}

\pgfplotsset{
  compat=1.9,
  xlabel near ticks,
  ylabel near ticks
}

\begin{document}
  \begin{tikzpicture}
    \begin{axis}[
      height=6cm,
      width=12cm,
      enlargelimits=0.05,
      legend style={
        at={(0.5,-0.2)},
        anchor=north,
        legend columns=-1
      },
      ymin=0,
      ymax=160,
      x tick label style={/pgf/number format/1000 sep=},
      x tick label style={rotate=45,anchor=east},
      ylabel={Mio. t},
      ybar interval=0.7,
      ytick={0,20,...,160}
    ]
      \addplot coordinates {
        (2002,115)
        (2003,116)
        (2004,124)
        (2005,129)
        (2006,135)
        (2007,139)
        (2008,142)
        (2009,147)
        (2010,150)
        (2011,155)
        (2012,100)
      };
      \addplot coordinates {
        (2002,33)
        (2003,35)
        (2004,3)
        (2005,40)
        (2006,3)
        (2007,43)
        (2008,43)
        (2009,41)
        (2010,43)
        (2011,45)
        (2012,100)
      };
      \addplot coordinates {
        (2002,0)
        (2003,0)
        (2004,0)
        (2005,0)
        (2006,0)
        (2007,0)
        (2008,93.6)
        (2009,94.07)
        (2010,96.46)
        (2011,96.7)
        (2012,100)
      };
      \legend{Auswahl 1,Auswahl 2,Auswahl 3}
  \end{axis}
  \begin{axis}[
      height=6cm,
      width=12cm,
      enlargelimits=0.05,
      ymin=0,
      ymax=160,
      ytick={0,20,...,160},
      hide x axis,
      axis y line*=right,
      ylabel={Mio. t}
    ]
      \addplot[opacity=0]{160};
    \end{axis}
  \end{tikzpicture}
\end{document}
Bild

Verfasst: So 26. Jan 2014, 18:38
von phil_90026
Genau das, was ich gesucht habe.

Vielen Dank für die schnelle Hilfe!

Verfasst: Di 20. Mai 2014, 22:50
von Rainer_Zufall
Hallo,

könnte mir von euch vielleicht jemand verraten, was man machen muss, damit an der x-Achse nicht die Jahreszahlen 2002... stehen, sondern so etwas wie 5 % bis 3 %? Ich komme einfach nicht dahinter, wie man da Text eingeben kann :( Sonst wäre das eine super Vorlage für mich.

Vielen Dank schon mal und Gruß
Rainer

Verfasst: Mi 21. Mai 2014, 08:34
von Johannes_B
Ich glaube ich verstehe deine Frage nicht ganz. Liegen deine Werte als Prozentangaben vor? Dann macht pgfplots das für dich ganz automatisch.
Ansonsten kannst du dir symbolic x coordinate anschauen.

Verfasst: Mi 21. Mai 2014, 09:50
von Rainer_Zufall
Hallo,

vielen Dank für die schnelle Antwort. Vielleicht habe ich mich etwas unklar ausgedrückt. Da, wo z.B. '2002' steht, möchte ich z.B. '3% bis 5%' stehen haben. Das macht er nicht, weil er nur Werte über Werte plotten will, was iwie auch verständlich ist.

Ich möchte die Verteilung relativer Fehler darstellen - also z.B. 86 Elemente haben einen rel. Fehler von 3% bis 5% usw.. Optimal wäre noch, wenn die Anzahl der jeweiligen Elemente (also die y-Werte) noch über den jeweiligen Säulen stehen könnten.

Viele Grüße
Rainer