
Wie kann ich die Achsen zweier nebeneinander in Tikz gezeichneter Graphen vertikal ausrichten? Hier ist mein Code:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{center}
\resizebox{0.45\linewidth}{8cm}{
\begin{tikzpicture}
\tikzstyle{every node}=[font=\tiny];
%Axes
\draw[-latex] (0, 0) -- (3, 0) ;
\draw[-latex] (0, -1.5) -- (0, 2);
\node[above] at (0, 2) {\( \$ \)};
\node[right] at (3, 0) {\( S_T \)};
%Title
\node[above, font = \small\bfseries] at (current bounding box.north) {Long Call};
\end{tikzpicture}
}
\quad
\resizebox{0.45\linewidth}{8cm}{
\begin{tikzpicture}
\tikzstyle{every node}=[font=\tiny];
%Axes
\draw[-latex] (0, 0) -- (3, 0) ;
\draw[-latex] (0, -1.5) -- (0, 2);
\node[above] at (0, 2) {\( \$ \)};
\node[right] at (3, 0) {\( S_T \)};
%Title
\node[above, font = \small\bfseries] at (current bounding box.north) {Short Call};
\end{tikzpicture}
}
\end{center}
\end{document}
Wie Sie im Bild unten sehen können, sind die Achsen leicht verschoben:
Das Problem scheint daher zu kommen, dass das g in „Long“ den linken Titel größer macht. Ich habe versucht, für beide Bilder die gleichen Größenmaße zu definieren und valign = t zu verwenden, aber beides hat nicht funktioniert.
Antwort1
Positionieren Sie sie einfach baseline
auf der gleichen Koordinate, hier (0,0)
:
\begin{tikzpicture}[baseline={(0,0)}]
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{center}
\resizebox{0.45\linewidth}{8cm}{
\begin{tikzpicture}[baseline={(0,0)}]
\tikzstyle{every node}=[font=\tiny];
%Axes
\draw[-latex] (0, 0) -- (3, 0) ;
\draw[-latex] (0, -1.5) -- (0, 2);
\node[above] at (0, 2) {\( \$ \)};
\node[right] at (3, 0) {\( S_T \)};
%Title
\node[above, font = \small\bfseries] at (current bounding box.north) {Long Call};
\end{tikzpicture}
}
\quad
\resizebox{0.45\linewidth}{8cm}{
\begin{tikzpicture}[baseline={(0,0)}]
\tikzstyle{every node}=[font=\tiny];
%Axes
\draw[-latex] (0, 0) -- (3, 0) ;
\draw[-latex] (0, -1.5) -- (0, 2);
\node[above] at (0, 2) {\( \$ \)};
\node[right] at (3, 0) {\( S_T \)};
%Title
\node[above, font = \small\bfseries] at (current bounding box.north) {Short Call};
\end{tikzpicture}
}
\end{center}
\end{document}
Antwort2
- Kleine vertikale Fehlausrichtungen der Bilder werden durch unterschiedliche vertikale Größen der Titelknoten verursacht: Der erste enthält den Buchstaben g mit Unterlänge, der zweite hat keinen solchen Buchstaben. Wenn Sie die Texttiefe beispielsweise mit vorgeben,
text depth=0.5ex
haben beide Titelknoten die gleiche Höhe, sodass beide Bilder vertikal ausgerichtet werden. - Off-Topic: Die Verwendung von
\resizebox
ist keine gute Idee. Dadurch ändert sich auch die Schriftgröße (Sie verlieren also die Kontrolle darüber).
\documentclass{article}
\usepackage{tikz}
%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\begin{document}
\begin{center}
\tikzset{
every node/.style = {text depth=0.5ex, font=\small} % <---
}
\begin{tikzpicture}
%Axes
\draw[-latex] (0, 0-0) -- (0.4\linewidth, 0) node[right] {\( S_T \)};
\draw[-latex] (0,-1.5) -- (0, 3) node[above] {\( \$ \)};
%Title
\node[above, font = \bfseries] at (current bounding box.north) {Long Call};
\end{tikzpicture}
\hfill
\begin{tikzpicture}
%Axes
\draw[-latex] (0, 0-0) -- (0.4\linewidth, 0) node[right] {\( S_T \)};
\draw[-latex] (0,-1.5) -- (0, 3) node[above] {\( \$ \)};
%Title
\node[above, font = \bfseries] at (current bounding box.north) {Short Call};
\end{tikzpicture}
\end{center}
\end{document}
(rote Linien zeigen Textränder)
Antwort3
Eine etwas allgemeinere Problemumgehung für den Fall, dass unterschiedliche Texthöhen in Überschriften oder Bildunterschriften die vertikale Ausrichtung zerstören, besteht darin, Latex so tun zu lassen, als ob im anderen Text auch ein höherer (niedrigerer) Buchstabe vorhanden wäre.
Wenn Ihre beiden Texte Long Call
und lauten Short Call
, ändern Sie einfach Letzteres in Short Call\vphantom{g}
. Auf diese Weise behandelt Latex es so, als würde es auch diesen vertikalen Platz einnehmen (aber keinen zusätzlichen horizontalen Platz).
Beachten Sie, dass dies ein kleiner Hack ist und es fast immer eine bessere Lösung gibt, wie in diesem Fall das Ändern des Ursprungs, aber es ist ein nützlicher Trick, wenn Sie die Ausrichtung schnell korrigieren möchten. Sie müssen nur wissen/raten, welche Buchstaben das Problem verursachen, oder Short Call\vphantom{Long Call}
zur Sicherheit etwas übertrieben vorgehen.