Alignment mehrerer tikz pictures untereinander mit zwei y ac

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Alignment mehrerer tikz pictures untereinander mit zwei y ac

von esdd » So 14. Jun 2015, 21:51

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

Alignment mehrerer tikz pictures untereinander mit zwei y ac

von homer5785 » So 14. Jun 2015, 21:06

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

von esdd » So 31. Mai 2015, 16:21

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
Dateianhänge
gl_plotalign.png
gl_plotalign.png (20.45 KiB) 3244 mal betrachtet

von Johannes_B » So 31. Mai 2015, 16:13

Das ist ein Crosspost zu TeX.Stackexchange.

Alignment mehrerer tikz pictures untereinander mit zwei y ac

von homer5785 » Sa 30. Mai 2015, 23:00

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}

Nach oben