Seite 1 von 1

Alignment mehrerer tikz pictures untereinander mit zwei y ac

Verfasst: Sa 30. Mai 2015, 23:00
von homer5785
Hallo Leute,

ich habe eine Frage zur Positionierung von tikzpictures, für Minimalbeispiel siehe anbei.
Zur Anordnung der beiden pgf-plots mit gleicher x Achse nutze ich "trim axis left" als Argument für den tikz-Aufruf. Das funktioniert auch wunderschön, solange keine zweite y-Achse ins Spiel kommt. Ich möchte eines der beiden Bilder mit zwei y Achsen haben (per axis-overlay) und die Zeichenbereiche sollen exakt gleich breit sein.
Könnt ihr mir helfen? Vielen Dank

Andreas

\documentclass[a4paper,12pt]{scrreprt}
\usepackage{lmodern}
\usepackage{pifont}
\usepackage[german]{babel}
\selectlanguage{german}
\usepackage[T1]{fontenc}
\usepackage{float}
\usepackage[hang,font=singlespacing]{caption}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{/pgf/number format/use comma, compat=newest}
\usetikzlibrary{patterns}
\usepackage{subfig}

\begin{document}
\begin{figure}
\begin{center}

\subfloat[Plot1]{
\begin{tikzpicture}[trim axis left]
	\begin{axis}[width=0.8\textwidth,height=0.35\textheight,
	%axis  y  line*=left,%    the  ’*’  avoids  arrow  heads
	grid,
	xlabel near ticks,
  ylabel near ticks,
	xmin=0,
	xmax=6,
	xlabel={t}]
	\addplot coordinates {(1,6.45)(2,3.4)(3,4.8)(4,4.1)(5,4.4)};

	\end{axis}
%
	\begin{axis}[width=0.8\textwidth,height=0.35\textheight,
	axis  y  line*=right,
	grid,
	xmin=0,
	xmax=6,
	xlabel near ticks,
  ylabel near ticks]
      \addplot coordinates {(1,66.4)(2,43.4)(3,4.8)(4,4.1)(5,9.4)};
		\end{axis}
\end{tikzpicture}

}

\subfloat[Plot2]{
\begin{tikzpicture}[trim axis left]
	  \begin{axis}[width=0.8\textwidth,height=0.3\textheight,
		grid,
		xmin=0,
   	xmax=6,
		xlabel={t},
		legend pos=north east]
      \addplot coordinates {(1,6666.4)(2,433.4)(3,4.8)(4,4.1)(5,9.4)};
			\end{axis}
			
		
	\end{tikzpicture}
}

\caption{Schöner Mist}
\end{center}
\end{figure}

\end{document}

Verfasst: So 31. Mai 2015, 16:13
von Johannes_B
Das ist ein Crosspost zu TeX.Stackexchange.

Verfasst: So 31. Mai 2015, 16:21
von esdd
Was für links geht, klappt auch mit rechts
\begin{tikzpicture}[trim axis left,trim axis right]
Bild

Code mit ein paar weiteren kleinen Änderungen:

\documentclass[a4paper,12pt]{scrreprt} 
\usepackage[utf8]{inputenc}% Angabe der Kodierung gegebenenfalls ändern
\usepackage{lmodern} 
\usepackage{pifont} 
\usepackage[ngerman]{babel}% <- neue Rechtschreibung
\usepackage[T1]{fontenc} 
\usepackage{pgfplots}% lädt auch tikz
\pgfplotsset{
  /pgf/number format/use comma,
  compat=1.12% derzeit aktuelle Version
} 
\usetikzlibrary{patterns} 
\usepackage{subfig} 

\begin{document} 
\begin{figure} 
\begin{center} 
\subfloat[Plot1]{ 
\begin{tikzpicture}[trim axis left,trim axis right] 
    \begin{axis}[width=0.8\textwidth,height=0.35\textheight, 
    axis y line*=left,% nur linke Achse, ohne Pfeil
    grid, 
    %xlabel near ticks, 
    %ylabel near ticks, 
    xmin=0, 
    xmax=6, 
    xlabel={t}] 
    \addplot coordinates {(1,6.45)(2,3.4)(3,4.8)(4,4.1)(5,4.4)}; 
    \end{axis} 
% 
    \begin{axis}[width=0.8\textwidth,height=0.35\textheight, 
    axis y line*=right,% nur rechte Aches, ohne Pfeil
    axis x line=none,% keine x-Achsen
    ymajorgrids,% nur y Gitterlinien
    xmin=0, 
    xmax=6, 
    %xlabel near ticks,
    %ylabel near ticks
    ] 
       \addplot coordinates {(1,66.4)(2,43.4)(3,4.8)(4,4.1)(5,9.4)}; 
       \end{axis} 
\end{tikzpicture} 
} 

\subfloat[Plot2]{ 
\begin{tikzpicture}[trim axis left,trim axis right] 
      \begin{axis}[width=0.8\textwidth,height=0.3\textheight, 
       grid, 
       xmin=0, 
       xmax=6, 
       xlabel={t}, 
       legend pos=north east] 
       \addplot coordinates {(1,6666.4)(2,433.4)(3,4.8)(4,4.1)(5,9.4)}; 
       \end{axis} 
    \end{tikzpicture} 
} 
\caption{Schöner Mist} 
\end{center} 
\end{figure} 
\end{document} 
Gruß
Elke

Alignment mehrerer tikz pictures untereinander mit zwei y ac

Verfasst: So 14. Jun 2015, 21:06
von homer5785
Hey sorry für die späte Rückmeldung, ich hatte nach Package-Update ein paar Tage mit meinem Dokument zu kämpfen. Danke für den Hinweis, das sieht gut aus.
Jetzt würde ich gern die Grafik noch auf textwidth erweitern sowie label hinzufügen. Dabei wird Label und Ticks über den Rand hinaus gemalt. Gibt es die Möglichkeit das so zu skalieren, dass sich alles gerade am breitesten Bild orientiert?
\documentclass[a4paper,12pt]{scrreprt}
\usepackage[ansinew]{inputenc}% Angabe der Kodierung gegebenenfalls ändern
\usepackage{lmodern}
\usepackage{pifont}
\usepackage{float}
\usepackage[ngerman]{babel}% <- neue Rechtschreibung
\usepackage[T1]{fontenc}
\usepackage{pgfplots}% lädt auch tikz
\pgfplotsset{
  /pgf/number format/use comma,
  compat=1.12% derzeit aktuelle Version
}
\usetikzlibrary{patterns}
\usepackage{subfig}

\begin{document}
Das ist der Text. Das ist der Text. Das ist der Text. Das ist der Text. Das ist der Text. Das ist der Text.
\begin{figure}[H]
\begin{center}
\subfloat[Plot1]{
\begin{tikzpicture}[trim axis left,trim axis right]
    \begin{axis}[width=\textwidth,height=0.3\textheight,
    axis y line*=left,% nur linke Achse, ohne Pfeil
    grid,
    %xlabel near ticks,
    %ylabel near ticks,
    xmin=0,
    xmax=6,
    xlabel={t},
		ylabel={I/A}]
    \addplot coordinates {(1,6.45)(2,3.4)(3,4.8)(4,4.1)(5,0.4)};
    \end{axis}
%
    \begin{axis}[width=\textwidth,height=0.3\textheight,
    axis y line*=right,% nur rechte Aches, ohne Pfeil
    axis x line=none,% keine x-Achsen
    ymajorgrids,% nur y Gitterlinien
		ylabel={U/V},
    xmin=0,
    xmax=6,
    ]
       \addplot coordinates {(1,66.4)(2,43.4)(3,4.8)(4,4.1)(5,-1200)};
       \end{axis}
\end{tikzpicture}
}

\subfloat[Plot2]{
\begin{tikzpicture}[trim axis left,trim axis right]
      \begin{axis}[width=\textwidth,height=0.3\textheight,
       grid,
       xmin=0,
       xmax=6,
       xlabel={t},
		ylabel={dI/dt/A/ns}
]
       \addplot coordinates {(1,6666.4)(2,433.4)(3,4.8)(4,4.1)(5,9.4)};
       \end{axis}
    \end{tikzpicture}
}
\caption{Schöner Mist}
\end{center}
Das ist der Text. Das ist der Text. Das ist der Text. Das ist der Text. Das ist der Text. Das ist der Text. Das ist der Text. Das ist der Text. Das ist der Text. Das ist der Text. Das ist der Text. Das ist der Text. Das ist der Text. Das ist der Text. Das ist der Text. Das ist der Text. Das ist der Text. Das ist der Text. Das ist der Text. Das ist der Text. Das ist der Text. 
\end{figure}
\end{document}
Dankeschön

Andreas

Verfasst: So 14. Jun 2015, 21:51
von esdd
Hast Du Dir die Infos zu den Optionen trim axis left und trim axis right in der Dokumentation von [d]pgfplots[/d] mal durchgelesen? Alles was außerhalb der gerahmten Box ist, also die ganzen Beschriftungen links und rechts, nehmen für LaTeX keinen Platz mehr ein.

Abgesehen davon bedeutet width=\textwidth, dass die Achsen so breit sind, dass noch 45pt für die Beschriftung links oder rechts übrig sind, unabhängig davon, wie viel Platz die Beschriftung einnimmt. Es gibt aber noch andere Möglichkeiten die Breite zu beeinflussen - steht alles in der schon erwähnten Doku.

Du musst die Breite also händisch einstellen. Zur Orientierung kannst Du das Paket showframe laden. Außerdem würde ich die Breite und, falls sie ebenfalls einheitlich ist, die Höhe nur einmal am Anfang der figure Umgebung festlegen.
\documentclass[a4paper,12pt]{scrreprt} 
\usepackage[ansinew]{inputenc}% Angabe der Kodierung gegebenenfalls ändern 
\usepackage{lmodern} 
\usepackage{pifont} 
\usepackage{float} 
\usepackage[ngerman]{babel}% <- neue Rechtschreibung 
\usepackage[T1]{fontenc} 
\usepackage{pgfplots}% lädt auch tikz 
\pgfplotsset{ 
   /pgf/number format/use comma, 
   compat=1.12% derzeit aktuelle Version 
} 
\usetikzlibrary{patterns} 
\usepackage{subfig} 

\usepackage{showframe}% Seitenlayout anzeigen
\begin{document} 

\begin{figure}[htb]
\pgfplotsset{every axis/.append style={width=\textwidth-80pt,height=.3\textheight}} 
\begin{center} 
\subfloat[Plot1]{ 
\begin{tikzpicture}[trim axis left,trim axis right] 
     \begin{axis}[
     axis y line*=left,% nur linke Achse, ohne Pfeil 
     grid, 
     xmin=0, 
     xmax=6, 
     xlabel={t}, 
       ylabel={I/A}] 
     \addplot coordinates {(1,6.45)(2,3.4)(3,4.8)(4,4.1)(5,0.4)}; 
     \end{axis} 
% 
     \begin{axis}[
     axis y line*=right,% nur rechte Aches, ohne Pfeil 
     axis x line=none,% keine x-Achsen 
     ymajorgrids,% nur y Gitterlinien 
       ylabel={U/V}, 
     xmin=0, 
     xmax=6, 
     ] 
        \addplot coordinates {(1,66.4)(2,43.4)(3,4.8)(4,4.1)(5,-1200)}; 
        \end{axis} 
\end{tikzpicture} 
} 

\subfloat[Plot2]{ 
\begin{tikzpicture}[trim axis left,trim axis right] 
       \begin{axis}[
        grid, 
        xmin=0, 
        xmax=6, 
        xlabel={t}, 
       ylabel={dI/dt/A/ns} 
] 
        \addplot coordinates {(1,6666.4)(2,433.4)(3,4.8)(4,4.1)(5,9.4)}; 
        \end{axis} 
     \end{tikzpicture} 
} 
\caption{Schöner Mist} 
\end{center} 
\end{figure} 
\end{document}
Gruß
Elke