Seite 1 von 1

Mehrere PGF Plots ausrichten

Verfasst: Mi 5. Nov 2014, 10:20
von Knigge
Hallo,

ich habe mal wieder ein schier unlösbares Problem. Ich habe mehrere tikzpictures in einer figure Umgebung. Nun möchte ich aber das die Diagramme untereinander sind und auch die Achsenbeschriftung an der linken Seite soll auf einer Linie sein. Ich vermute mal das das Problem daran liegt, das ich die tikzpicture Umgebung beendet habe um ein neues Diagramm zu machen und somit die Verbindung fehlt. Daher habe ich auch schon probiert mehrere axis Umgebungen hintereinander zu setzen. Leider erfolglos.
Wenn der Befehl \pgfplotsset{compat=newest} entfernt wird, sind Sie ausgerichtet aber die Achsenbeschriftung geht manchmal auch bis in die Zahlen hinein. Außerdem benötige ich den Befehl um bei anderen Plots die Linke und Rechte Achse zu beschriften.

Hat jemand eine gute Idee um das Problem zu lösen? Ich würde mir auch die Mühe machen und die Sache mit hspace ausrichten, damit es gut aussieht nur leider weiß ich nicht wo.

\documentclass{scrartcl} 
\usepackage{tikz,pgfplots}
\usetikzlibrary{positioning, calc, arrows}
\usetikzlibrary{decorations.pathmorphing, fadings, patterns}

\pgfplotsset{compat=newest}

\begin{document}
\begin{figure}
\centering
  \begin{tikzpicture}
    \begin{axis}[scale only axis,
    grid=both, 
    height=2.6cm, width=12cm,
    xlabel={Zeit [ $ s $ ]},
    ylabel style={text width=4cm,align=center},
    ylabel={{Bremsmoment [ $ Nm $ ]}},]
    \addplot coordinates {(1,6.45)(2,3.4)(3,4.8)(4,4.1)(5,4.4)};
    \end{axis}
  \end{tikzpicture}\\
  \begin{tikzpicture}
    \begin{axis}[scale only axis,
    grid=both, 
    height=2.6cm, width=12cm,
    xlabel={Zeit [ $ s $ ]},
    ylabel style={text width=4cm,align=center}, 
    ylabel={{Motorsantriebsmoment [ $ Nm $ ]}},]
    \addplot coordinates {(1,-660.4)(2,-430.4)(3,-40.8)(4,-40.1)(5,-90.4)};
    \end{axis}
  \end{tikzpicture}
  \begin{tikzpicture}
    \begin{axis}[scale only axis,
    grid=both, 
    height=2.6cm, width=12cm,
    xlabel={Zeit [ $ s $ ]},
    ylabel style={text width=5cm,align=center}, 
    ylabel={{Antriebsmoment [ $ Nm $ ]}},]
    \addplot coordinates {(1,-6336.4)(22,-443.4)(33,-421.8)(64,-4434.1)(95,-9234.4)(125,-934.4)};
    \end{axis}
  \end{tikzpicture}  
\end{figure}
\end{document}

Verfasst: Mi 5. Nov 2014, 11:59
von esdd
Zwischen dem mittleren und dem unteren Diagrammm fehlt ein manueller Umbruch.

Die Diagramme könntest Du ausrichten, in dem Du allen tikzpicture Umgebungen die Option trim axis left verpasst. Allerdings gehört dann die gesamte Beschriftung der y-Achsen nicht mehr zu den Bounding Boxen und rutscht beim Zentrieren der Diagramme zu weit nach links. Auf Grund der Breite der Diagramme könntest Du sie auch einfach mit \raggedleft rechtsbündig ausrichten.

Da Du aber sowieso auch die ylabel aneinander ausrichten willst, ist es einfacher diese "obere" Zeile der Beschriftung in einem festen Abstand zur y-Achse zu positionieren:

\documentclass{scrartcl} 
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}

\tikzset{
  myylabelstyle/.style={
    text width=#1,align=center,
    anchor=north,at={(rel axis cs:-0.2,0.5)}
  }
}

\usepackage{showframe}% Anzeigen der Seitenaufteilung

\begin{document} 
\begin{figure} 
\centering
   \begin{tikzpicture} 
     \begin{axis}[scale only axis, 
     grid=both, 
     height=2.6cm, width=12cm, 
     xlabel={Zeit [ $ s $ ]}, 
     ylabel style={myylabelstyle=4cm}, 
     ylabel={{Bremsmoment [ $ Nm $ ]}},] 
     \addplot coordinates {(1,6.45)(2,3.4)(3,4.8)(4,4.1)(5,4.4)}; 
     \end{axis} 
   \end{tikzpicture}\\ 
   \begin{tikzpicture} 
     \begin{axis}[scale only axis, 
     grid=both, 
     height=2.6cm, width=12cm, 
     xlabel={Zeit [ $ s $ ]}, 
     ylabel style={myylabelstyle=4cm}, 
     ylabel={{Motorsantriebsmoment [ $ Nm $ ]}},] 
     \addplot coordinates {(1,-660.4)(2,-430.4)(3,-40.8)(4,-40.1)(5,-90.4)}; 
     \end{axis} 
   \end{tikzpicture}\\
   \begin{tikzpicture} 
     \begin{axis}[scale only axis, 
     grid=both, 
     height=2.6cm, width=12cm, 
     xlabel={Zeit [ $ s $ ]}, 
     ylabel style={myylabelstyle=5cm}, 
     ylabel={{Antriebsmoment [ $ Nm $ ]}},] 
     \addplot coordinates {(1,-6336.4)(22,-443.4)(33,-421.8)(64,-4434.1)(95,-9234.4)(125,-934.4)}; 
     \end{axis} 
   \end{tikzpicture}   
\end{figure} 
\end{document} 
Gruß
Elke

Verfasst: Mi 5. Nov 2014, 13:47
von Knigge
Vielen Dank. Genau danach habe ich gesucht.

Ich bin immer wieder begeistert von der Schnelligkeit und der Qualität der Antworten...

Verfasst: Mi 5. Nov 2014, 14:25
von Knigge
Da bei mir gleich die nächste Frage aufkam, wie mache ich das mit einem Diagramm (PGF Plot) mit Zwei Y Achsen. Hier die Lösung für alle.

Die Diagramme mussten natürlich schmaler gemacht werden, damit man nicht auf den Rand kommt.

\documentclass{scrartcl}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}

\tikzset{
  myylabelstyle/.style={
    text width=#1,align=center,
    anchor=north,at={(rel axis cs:-0.2,0.5)}
  }
}

\usepackage{showframe}% Anzeigen der Seitenaufteilung

\begin{document}
\begin{figure}
\centering
   \begin{tikzpicture}
     \begin{axis}[scale only axis,
     grid=both,
     height=2.6cm, width=9cm,
     xlabel={Zeit [ $ s $ ]},
     ylabel style={myylabelstyle=3cm},
     ylabel={{Bremsmoment [ $ Nm $ ]}},]
     \addplot coordinates {(1,6.45)(2,3.4)(3,4.8)(4,4.1)(5,4.4)};
     \end{axis}
   \end{tikzpicture}\\
   \begin{tikzpicture}
     \begin{axis}[scale only axis,
     grid=both,
     height=2.6cm, width=9cm,
     xlabel={Zeit [ $ s $ ]},
     ylabel style={myylabelstyle=4cm},
     ylabel={{Motorsantriebsmoment [ $ Nm $ ]}},]
     \addplot coordinates {(1,-660.4)(2,-430.4)(3,-40.8)(4,-40.1)(5,-90.4)};
     \end{axis}
   \end{tikzpicture}\\
   \begin{tikzpicture}[trim axis right]
     \begin{axis}[scale only axis,
     grid=both,
     height=2.6cm, width=9cm,
     xlabel={Zeit [ $ s $ ]},
     ylabel style={myylabelstyle=5cm},
     ylabel={{Antriebsmoment1 [ $ Nm $ ]}},]
     \addplot [color=green] coordinates {(1,-6336.4)(22,-443.4)(33,-421.8)(64,-4434.1)(95,-9234.4)(125,-934.4)};
     \end{axis}
     \begin{axis}[scale only axis,
     grid=both,
     height=2.6cm, width=9cm,
     yticklabel pos=right,
     ylabel style={text width=4cm,align=center}, 
     ylabel={{Antriebsmoment2 [ $ Nm $ ]}},
     xtick=\empty,]
     \addplot [color=red] coordinates{(1,336.4)(22,43.4)(33,21.8)(64,434.1)(95,234.4)(125,34.4)};
     \end{axis} 
   \end{tikzpicture}  
\end{figure}
\end{document}