Säulendiagramm mit tikzpicture, Achsenbeschriftung variieren

Tabellen und Grafiken erstellen und anordnen


phil_90026
Forum-Anfänger
Forum-Anfänger
Beiträge: 19
Registriert: Do 24. Okt 2013, 20:38

Säulendiagramm mit tikzpicture, Achsenbeschriftung variieren

Beitrag 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]

Benutzeravatar
localghost
Forum-Meister
Forum-Meister
Beiträge: 825
Registriert: Di 8. Jul 2008, 15:40
Wohnort: Braunschweig

Beitrag 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
TeX und LaTeX, Fragen und Antworten – TeXwelt

¹ Es tut mir Leid. Meine Antworten sind begrenzt. Sie müssen die richtigen Fragen stellen.
² System: openSUSE 13.1 (Linux 3.11.6), TeX Live 2013, TeXworks 0.5 (r1349)
³ Lernt gerade TeX (und versucht, es zu verstehen).

phil_90026
Forum-Anfänger
Forum-Anfänger
Beiträge: 19
Registriert: Do 24. Okt 2013, 20:38

Beitrag von phil_90026 »

Genau das, was ich gesucht habe.

Vielen Dank für die schnelle Hilfe!

Rainer_Zufall

Beitrag 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

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag 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.
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

Rainer_Zufall

Beitrag 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

Antworten