Mehrere PGF Plots ausrichten

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: Mehrere PGF Plots ausrichten

von Knigge » Mi 5. Nov 2014, 14:25

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} 

von Knigge » Mi 5. Nov 2014, 13:47

Vielen Dank. Genau danach habe ich gesucht.

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

von esdd » Mi 5. Nov 2014, 11:59

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

Mehrere PGF Plots ausrichten

von Knigge » Mi 5. Nov 2014, 10:20

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}

Nach oben