正确对齐 tikz 子图,同时尊重边距

正确对齐 tikz 子图,同时尊重边距

我有一个文档,其中我使用 tikz 包含不同的子图。问题是,子图 y 轴上的数字可能具有不同的长度,这导致子图未正确对齐(水平)。

我已经找到了回答一个非常相似的问题,建议使用该trim axis left选项。这解决了对齐问题,但标签不再遵守页边距。

下面是重现该问题的示例代码(trim axis left已注释掉):

\documentclass[11pt,a4paper]{article}
\usepackage{pgfplots}
\usepackage{lipsum}
\usepackage{subcaption}
\pgfplotsset{compat=newest}
\begin{document}
\lipsum[1]
\begin{figure}[ht]
\centering
\begin{subfigure}[b]{1.0\columnwidth}
\begin{tikzpicture}%[trim axis left]
\begin{axis}[%
axis line style = thick,
width=4in,height=1in,at={(0in,0in)},
scale only axis,
xmin=0,xmax=10,ymin=0,ymax=1,
axis x line*=bottom,axis y line*=left
]
\addplot [color=red,dashed,line width=2.0pt]
  table[row sep=crcr]{%
0   0.1\\
9   0.9\\
};
\end{axis}
\end{tikzpicture}
\end{subfigure}

\begin{subfigure}[b]{1.0\columnwidth}
\begin{tikzpicture}%[trim axis left]
\begin{axis}[%
axis line style = thick,
width=4in,height=1in,at={(0in,0in)},
scale only axis,
xmin=0,xmax=10,ymin=0,ymax=9000,
axis x line*=bottom,axis y line*=left
]
\addplot [color=red,dashed,line width=2.0pt]
  table[row sep=crcr]{%
0   1000\\
9   9000\\
};
\end{axis}
\end{tikzpicture}
\end{subfigure}
\end{figure}

\lipsum[1]
\end{document}

以下图片显示了该问题:

在此处输入图片描述

我希望两个图像水平对齐,同时仍尊重页边距。

有人知道怎么做吗?

答案1

解决您的问题的一种可能方法——正如我在评论中提到的:

\documentclass[11pt,a4paper]{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{subcaption}

\usepackage{lipsum}

\begin{document}
\lipsum[1]
\begin{figure}[ht]
\pgfplotsset{width=\linewidth,
             axis lines=left,
             axis line style = thick,
             scale only axis
            }
    \centering
\begin{subfigure}[b]{.8\columnwidth} % narower subfigure
                                     % determine diagram width
\begin{tikzpicture}[trim axis left,trim axis right] 
\begin{axis}[height=1in,
xmin=0, xmax=10,
ymin=0, ymax=1,
]
\addplot [color=red,dashed,line width=2.0pt]
  table[row sep=crcr]{%
0   0.1\\
9   0.9\\
};
\end{axis}
\end{tikzpicture}
\end{subfigure}

\medskip
\begin{subfigure}[b]{0.8\columnwidth}
\begin{tikzpicture}[trim axis left,trim axis right] 
\begin{axis}[height=1in,%
xmin=0, xmax=10,
ymin=0, ymax=9000,
]
\addplot [color=red,dashed,line width=2.0pt]
  table[row sep=crcr]{%
0   1000\\
9   9000\\
};
\end{axis}
\end{tikzpicture}
\end{subfigure}
\end{figure}
\lipsum[1]
\end{document}

在此处输入图片描述

相关内容