如何在乳胶中对齐两个 tikzpicture 图
how to align two tikzpicture plots in latex
我正在尝试使用 https://www.latex-tutorial.com/tutorials/figures/ 中显示的子图方法来制作并排图,但我似乎无法调整大小并让它们并排...我是什么做错了吗?
下面是我正在使用的代码
\begin{figure}
\centering
\begin{subfigure}[b!]{0.3\textwidth}
\begin{tikzpicture}
\begin{axis}[
axis y line = middle,
axis x line = middle,
xlabel = $x$,
ylabel = {$f(x) = x^3$},
grid=major,
]
\addplot [
domain=-3:3,
samples=100,
color=red,
]
{x^3};
\addlegendentry{$x^3$}
%
\addplot [
domain=-3:3,
samples=100,
color=blue,
]
{x^3 + 3};
\addlegendentry{$x^3 + 3$}
%
\addplot [
domain=-3:3,
samples=100,
color=green,
]
{x^3 - 3};
\addlegendentry{$x^3 - 3$}
\end{axis}
\end{tikzpicture}
\end{subfigure}
%\hfill
\begin{subfigure}[b]{0.3\textwidth}
\begin{tikzpicture}
\begin{axis}[
axis y line = middle,
axis x line = middle,
xlabel = $x$,
ylabel = {$f(x) = x^3$},
grid=major,
]
\addplot [
domain=-3:3,
samples=100,
color=red,
]
{x^3};
\addlegendentry{$x^3$}
\end{axis}
\end{tikzpicture}
\end{subfigure}
\caption{lajsdfls}
\end{figure}
你的代码有两个问题。
数字的第一个水平对齐不正确,但这可以通过使用
轻松修复
\begin{subfigure}[b]{0.3\textwidth}
而不是
\begin{subfigure}[b!]{0.3\textwidth}
关于宽度,创建子图环境时所做的是创建指定宽度的小型页面。 但是您是否要在您的内容中遵守此宽度,不会进行重新缩放。
例如,如果在一个子图中包含一个图像并为其指定宽度 \linewidth,则该宽度将得到遵守。但是如果你给这个图像一个 15cm 的宽度,它可能会比你的 minipage 大。但是 LaTeX 会尊重你的指令(并指出一个过满的 hbox)。
这就是你遇到的问题。您的地块太大且重叠。
有两种方法可以解决这个问题。
你可以给axis环境一个width=\linewidth参数,但是一般需要重新设计你的plot
您可以重新缩放由 tikz 创建的框。最灵活的方法是使用 adjustbox package
\documentclass{article}
\usepackage{subcaption}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{adjustbox}
\begin{document}
\begin{figure}
\centering
\begin{subfigure}[b]{0.45\textwidth}
%%% \begin{adjustbox}{width=\linewidth} % rescale box
\begin{tikzpicture}
\begin{axis}[
%%% width=\linewidth, % or modify the plot width
axis y line = middle,
...
...
\end{axis}
\end{tikzpicture}
%%% \end{adjustbox} %
\end{subfigure}%
\hfill
\begin{subfigure}[b]{0.45\textwidth}
etc.
向轴环境添加宽度参数
使用调整框重新缩放
顺便说一句,如果你不打算在你的情节中添加子字幕,子图环境是无用的,你可以将你的(适当缩放的)tikz 图片并排放置,用 \hfill 分隔。
我正在尝试使用 https://www.latex-tutorial.com/tutorials/figures/ 中显示的子图方法来制作并排图,但我似乎无法调整大小并让它们并排...我是什么做错了吗? 下面是我正在使用的代码
\begin{figure}
\centering
\begin{subfigure}[b!]{0.3\textwidth}
\begin{tikzpicture}
\begin{axis}[
axis y line = middle,
axis x line = middle,
xlabel = $x$,
ylabel = {$f(x) = x^3$},
grid=major,
]
\addplot [
domain=-3:3,
samples=100,
color=red,
]
{x^3};
\addlegendentry{$x^3$}
%
\addplot [
domain=-3:3,
samples=100,
color=blue,
]
{x^3 + 3};
\addlegendentry{$x^3 + 3$}
%
\addplot [
domain=-3:3,
samples=100,
color=green,
]
{x^3 - 3};
\addlegendentry{$x^3 - 3$}
\end{axis}
\end{tikzpicture}
\end{subfigure}
%\hfill
\begin{subfigure}[b]{0.3\textwidth}
\begin{tikzpicture}
\begin{axis}[
axis y line = middle,
axis x line = middle,
xlabel = $x$,
ylabel = {$f(x) = x^3$},
grid=major,
]
\addplot [
domain=-3:3,
samples=100,
color=red,
]
{x^3};
\addlegendentry{$x^3$}
\end{axis}
\end{tikzpicture}
\end{subfigure}
\caption{lajsdfls}
\end{figure}
你的代码有两个问题。
数字的第一个水平对齐不正确,但这可以通过使用
轻松修复\begin{subfigure}[b]{0.3\textwidth}
而不是
\begin{subfigure}[b!]{0.3\textwidth}
关于宽度,创建子图环境时所做的是创建指定宽度的小型页面。 但是您是否要在您的内容中遵守此宽度,不会进行重新缩放。
例如,如果在一个子图中包含一个图像并为其指定宽度 \linewidth,则该宽度将得到遵守。但是如果你给这个图像一个 15cm 的宽度,它可能会比你的 minipage 大。但是 LaTeX 会尊重你的指令(并指出一个过满的 hbox)。
这就是你遇到的问题。您的地块太大且重叠。
有两种方法可以解决这个问题。
你可以给axis环境一个width=\linewidth参数,但是一般需要重新设计你的plot
您可以重新缩放由 tikz 创建的框。最灵活的方法是使用 adjustbox package
\documentclass{article}
\usepackage{subcaption}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{adjustbox}
\begin{document}
\begin{figure}
\centering
\begin{subfigure}[b]{0.45\textwidth}
%%% \begin{adjustbox}{width=\linewidth} % rescale box
\begin{tikzpicture}
\begin{axis}[
%%% width=\linewidth, % or modify the plot width
axis y line = middle,
...
...
\end{axis}
\end{tikzpicture}
%%% \end{adjustbox} %
\end{subfigure}%
\hfill
\begin{subfigure}[b]{0.45\textwidth}
etc.
向轴环境添加宽度参数
使用调整框重新缩放
顺便说一句,如果你不打算在你的情节中添加子字幕,子图环境是无用的,你可以将你的(适当缩放的)tikz 图片并排放置,用 \hfill 分隔。