PGFplots:调整两个图以达到相同的高度

PGFplots:调整两个图以达到相同的高度

以下示例中的图的高度略有不同。能否让它们的高度相等没有 \resizebox(会影响字体大小)或以绝对量设置高度。

\documentclass{article}

\usepackage{pgfplots}
  \pgfplotsset{compat=newest}

\begin{document}

\begin{figure}[h]
\centering
\begin{tikzpicture}
\begin{axis}[
  grid=major,
  xmin=-3,
  xmax=+5,
  ymin=-0.25,
  xlabel=$y$,
  ylabel={$f(y)$},
  width=.5\linewidth
]
  \addplot[samples=101, domain=-3:5] ({x}, {2*sqrt(abs(x-1))});
\end{axis}
\end{tikzpicture}
\hspace{.05\linewidth}
\begin{tikzpicture}
\begin{axis}[
  grid=major,
  xlabel=$x$,
  ylabel={$y_a(x)$},
  width=.5\linewidth
]
  \addplot[domain=0:2] {1 - (1 - x/2)^2};
  \addplot[domain=2:4] {1 + (x - 2)^2/4};
  \addplot[domain=2:4, dotted] {1};
  \addplot[domain=4:6, dotted] {1 + (x - 4)^2/4};
\end{axis}
\end{tikzpicture}
\end{figure}

\end{document}

答案1

高度不同的原因是xlabels。字符xy具有不同的深度。因此,一种方法是向它们两者添加 ,\strut就像我在 MWE 中所做的那样:

在此处输入图片描述

或者,您可以x\vphantom{y}在第二个图中使用。当然,此解决方案取决于图的实际标签。

笔记:

  • 您还使用了超过\linewidth。我已在下面更正了。

代码:

\documentclass{article}

\usepackage{pgfplots}
  \pgfplotsset{compat=newest}

\begin{document}

\begin{figure}[h]
\centering
\begin{tikzpicture}
\begin{axis}[
  grid=major,
  xmin=-3,
  xmax=+5,
  ymin=-0.25,
  xlabel=$y\strut$,
  ylabel={$f(y)$},
  width=.48\linewidth
]
  \addplot[samples=101, domain=-3:5, blue, thick] ({x}, {2*sqrt(abs(x-1))});
\end{axis}
\end{tikzpicture}
\hfill%\hspace{.05\linewidth}
\begin{tikzpicture}
\begin{axis}[
  grid=major,
  xlabel=$x\strut$,
  ylabel={$y_a(x)$},
  width=.48\linewidth
]
  \addplot[domain=0:2, red, thick] {1 - (1 - x/2)^2};
  \addplot[domain=2:4, red, thick] {1 + (x - 2)^2/4};
  \addplot[domain=2:4, red, thick, dotted] {1};
  \addplot[domain=4:6, red, thick, dotted] {1 + (x - 4)^2/4};
\end{axis}
\end{tikzpicture}%
%\hfill\null{}% <-- uncomment if you don't want second plot all the way to the right
\end{figure}

\end{document}

相关内容