pgfplots: Säulen und Trendlinie kombinieren Thema ist als GELÖST markiert

Tabellen und Grafiken erstellen und anordnen


Katharina

pgfplots: Säulen und Trendlinie kombinieren

Beitrag von Katharina »

Hallo zusammen,

ich habe eine Frage und habe vorher zwei Tage das manual gewälzt und einen LaTeX Profi befragt. Leider ohne Ergebnis, sodass ich mich an euch wende und um Nachsicht bitte, falls die Antwort auf der Hand liegt.

Anbei hänge ich euch ein Minimalbeispiel an. Leider kommen die Daten aus einer Dat-Datei. Kann ich die auch anhängen? Ansonsten gebe ich euch die Daten unten aus, da es nur 25 sind. Falls ich die gleich in den Code integrieren kann, möge mir bitte jemand sagen, wie, dann ändere ich das gerne ab.

Das Problem ist, dass ich den zweiten Plot - also die Regressionsgerade nicht sehen kann.
Die unschöne Variante mit zwei axis-Umgebungen funktioniert nicht, weil ich dann unterschiedliche Skalierungen habe. Das kann ich für 40 Diagramme nicht anpassen. Zumindestens nicht so, wie ich das gemacht habe - nämlich händisch.

ich wäre um jede Lösung dankbar, am schönsten fände ich jetzt natürlich, wenn einfach meine Trendlinie sichtbar werden würde.

Wie ich eine Trendlinie in LaTeX selbst erstellen kann, habe ich leider nach mehreren Stunden lesen und probieren nicht verstanden..
\documentclass[a4paper,12pt]{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.5}
\usepackage{pgf,tikz,pdfpages} 
\usepackage{fp} 
\begin{document}
\begin{figure}[H]
\centering
\begin{tikzpicture}[trim axis left]
\begin{axis}[
width=1\textwidth,height=5cm,
xmin=1992, xmax=2012, 
restrict x to domain=1990:2014, 
extra x ticks={1991,1993,1995,1997,1999,2001,2003,2005,2007,2009,2011,2013},
ymajorgrids,
axis lines=left,
%hide y axis,
scaled ticks=false,
xticklabel style={
rotate=65, %Beschriftung kippen
anchor=east,
/pgf/number format/precision=0,
/pgf/number format/fixed,
/pgf/number format/fixed zerofill,
/pgf/number format/1000 sep=}, 
enlargelimits=0.15,
legend style={at={(0.5,-0.15)},
anchor=north,legend columns=-1},
ybar,
bar width=4pt,
]

\addplot [fill=black!50,draw=black!50] table {gesamt.dat};
\end{axis}
\begin{axis}[
width=1\textwidth,height=5cm,
axis lines=none,
]
\pgfplotsset{ticks=none}
\addplot [color=red] {0.1131*x+256.58};
\end{axis}
\end{tikzpicture}
\caption[Gesamtanzahl]{Gesamtanzahl}
\end{figure}
\end{document}

Und hier die Daten der Datei "gesamt.dat"
Zeilenbeschriftungen	Anzahl von Jahr
1990	36
1991	35
1992	30
1993	33
1994	29
1995	28
1996	32
1997	23
1998	27
1999	34
2000	40
2001	24
2002	25
2003	29
2004	28
2005	32
2006	32
2007	30
2008	30
2009	31
2010	31
2011	32
2012	28
2013	28
2014	28
Ich bedanke mich recht herzlich im Voraus. Sollte eine Angabe fehlen, bitte kurz nachfragen.

Schöne Grüße
Katharina

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

Beitrag von esdd »

Hier ist ein Vorschlag, bei dem ich noch ein paar andere Kleinigkeiten geändert habe. Bitte kontrolliere auf alle Fälle nochmal die Funktion für die Trendgerade. Diese habe ich unten willkürlich geändert, damit sie auf den Balken liegt.
\begin{filecontents*}{gesamt.dat}
Zeilenbeschriftungen   {Anzahl von Jahr} 
 1990   36 
 1991   35 
 1992   30 
 1993   33 
 1994   29 
 1995   28 
 1996   32 
 1997   23 
 1998   27 
 1999   34 
 2000   40 
 2001   24 
 2002   25 
 2003   29 
 2004   28 
 2005   32 
 2006   32 
 2007   30 
 2008   30 
 2009   31 
 2010   31 
 2011   32 
 2012   28 
 2013   28 
 2014   28 
\end{filecontents*}
\documentclass[a4paper,12pt]{article} 
\usepackage{pgfplots} 
\pgfplotsset{compat=1.5} 
\begin{document} 
\begin{figure} 
\centering 
\begin{tikzpicture}[trim axis left] 
  \begin{axis}[ 
      width=1\textwidth,height=5cm, 
      xmin=1989.5, xmax=2014.5,
      domain=1990:2014,
      xtick={1990,...,2014},
      ymajorgrids, 
      axis lines=left, 
      scaled ticks=false, 
      xticklabel style={ 
      rotate=65, %Beschriftung kippen 
      anchor=east, 
      /pgf/number format/precision=0, 
      /pgf/number format/fixed, 
      /pgf/number format/fixed zerofill, 
      /pgf/number format/1000 sep=}, 
      enlarge y limits=0.15, 
      legend style={at={(0.5,-0.35)}, 
      anchor=north,legend columns=-1}
    ]
    \addplot[fill=black!50,draw=black!50,
        ybar,bar width=4pt,ybar legend
      ] table {gesamt.dat};
    \addplot[color=red,line legend]{0.1131*(x-1990)+25.658};
    \legend{Bar, Linie}
  \end{axis} 
\end{tikzpicture} 
\caption{Gesamtanzahl} 
\end{figure} 
\end{document}
pgfplots lädt auch tikz, was wiederum pgf lädt. Die aktuelle pgfplots Version ist übrigens 1.12, weshalb es mich etwas wundert, dass Du compat=1.5 einstellst.

Gruß
Elke

Bild
Dateianhänge
gl_trendlinie.png
gl_trendlinie.png (16.45 KiB) 1708 mal betrachtet

Katharina

Beitrag von Katharina »

Danke schonmal!! Ich probiere das gleich nachher aus.

Kann ich damit auch mehrere Tabellen einfügen?
Wie gesagt, ich habe insgesamt 40 Tabellen.

Katharina

Beitrag von Katharina »

Liebe Elke,

vielen, vielen Dank für deine Hilfe. Es klappt. Ich kann aus irgendeinem Grund keine rote Linie sehen, aber eine schwarze funktioniert.
Außerdem habe ich mehrere Tabellen eingefügt und es klappt hervorragend. :)

Jetzt kann ich endlich beruhigt meine BA schreiben, weil ich weiß, dass es mit den Diagrammen so schön funktioniert.

Ich habe übrigens compat=1.5 eingestellt, weil ich dachte, das wäre die neueste Version. Frag mich nicht, wie ich darauf gekommen bin. Habe es aber geändert.

Viele Grüße
Katharina

Antworten