PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PGFPlots - Diagramme nebeneinander anordnen



letscho84
15-10-2011, 21:36
Hallo zusammen,

ich habe 8 Datensätze, die ich gerne in einzelnen Diagrammen unterbringen will. Jedoch möchte ich davon immer zwei Diagramme nebeneinander anordnen. Ich weiß aber nicht wie ich das mache. Kann mir da jemand helfen?

Grüße Letscho

Ich verwende den folgenden Code für zwei Diagramme in einer figure-Umgebung:




\documentclass[a4paper, 11pt, oneside,]{scrbook}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}

\usepackage{pgfplots}
\pgfplotsset{compat=1.3}

\begin{document}

\begin{figure}
\centering


\begin{tikzpicture}
\begin{axis}[width=5cm, height=0.2\textheight,
xlabel={$Zeit [s]$},
ylabel={$Schub [N]$},
enlarge x limits=0.01]
\addplot[red] table[x=TIME, y=T1] {T1.csv};
\end{axis}
\end{tikzpicture}

\begin{tikzpicture}
\begin{axis}[width=5cm, height=0.2\textheight,
xlabel={$Zeit [s]$},
ylabel={$Schub [N]$},
enlarge x limits=0.01]
\addplot[blue] table[x=TIME, y=T2] {T2.csv};
\end{axis}
\end{tikzpicture}

\end{figure}

\end{document}

rstuby
16-10-2011, 05:27
Vielleicht mit zwei Minipages?
(ungetestet wegen Zeitmangel trotz guten Minimalbeispiels)

rais
16-10-2011, 07:23
Moin moin,


ich habe 8 Datensätze, die ich gerne in einzelnen Diagrammen unterbringen will. Jedoch möchte ich davon immer zwei Diagramme nebeneinander anordnen. Ich weiß aber nicht wie ich das mache. Kann mir da jemand helfen?

nun, ich habe weder T1.csv noch T2.csv und kann daher Dein Beispiel gar nicht testen, aber solange Du einen neuen Absatz (= Leerzeile im Code) zwischen beiden tikzpicture-Umgebungen beginnst, bekommst Du sie auch nicht nebeneinander:


\end{tikzpicture}
%
\begin{tikzpicture}

MfG

letscho84
16-10-2011, 14:56
Moin moin,

nun, ich habe weder T1.csv noch T2.csv und kann daher Dein Beispiel gar nicht testen, aber solange Du einen neuen Absatz (= Leerzeile im Code) zwischen beiden tikzpicture-Umgebungen beginnst, bekommst Du sie auch nicht nebeneinander:


\end{tikzpicture}
%
\begin{tikzpicture}

MfG

Hallo Rais,

danke für den Tipp. Ohne Leerzeilen im Code werden die Diagramme nebeneinader dargestellt.

Grüße, Letscho

Feuersaenger
16-10-2011, 16:40
Ein tikzpicture ist im prinzip eine Box wie alles andere, d.h. das mit der Leerzeile ist schonmal gut.

Hier sind noch ein paar Tips:

1. Du kannst die tikzpicture auch gerne in eine tabelle packen - dann hast Du alignment.
Neben tabular gibt es da auch tikz eigene optionen, wozu das pgfplots manual (Section "Alignment") Beispiele enthaelt.

2. Es macht Sinn, bei dem linken diagramm die tick labels auf der linken seite und bei dem rechten diagramm auf der rechten seite darzustellen.

Beispielsweise kannst Du

% preamble: \pgfplotsset{compat=1.3}

{\centering
\begin{tikzpicture}[trim axis left]
\begin{axis}[yticklabel pos=left]
........
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}[trim axis right]
\begin{axis}[yticklabel pos=right]
....
\end{axis}
\end{tikzpicture}

}%

zwei Diagramme nebeneinander zentriert plazieren (die '{' und '}' sind nur fuer \centering gut). Das 'yticklabel pos' plaziert die tick labels woanders hin. In der Praeaembel sollte dafuer \pgfplotsset{compat=1.3} oder hoeher eingestellt werden.

Das 'trim axis left' bzw. 'trim axis right' ist in diesem Zusammenhang sehr nuetzlich: es wird an das tikzpicture gegeben und veraendert die Bounding box des pictures, so dass alles, was links bzw. rechts von der Achse ist, nicht in die Bounding box eingeht. Effekt: das alignment sieht viel besser aus.

letscho84
16-10-2011, 17:56
Hallo Feuersaenger,

vielen vielen DANK für die Tipps. Habe sie gleich ausprobiert und klappt super.

Danke noch mal.

Grüße, Letscho