tikz 图对齐

tikz 图对齐

我正在尝试使用

\begin{figure}
\centering
\makebox[\columnwidth]{\input{try1.tikz}}
\makebox[\columnwidth]{\input{try2.tikz}}
\end{figure}

文件try1.tikztry2.tikz如下所示。它们之间的唯一区别是前者 xmin=-2,后者 xmin=-4。

我明白了

在此处输入图片描述

如何垂直对齐面板?

try1.tikz是:

\begin{tikzpicture}[font=\footnotesize\sffamily]

\begin{axis}[%
view={0}{90},
width=4cm,
height=4cm,
scale only axis,
xmin=-2, xmax=1,
ymin=0, ymax=1.7,
name=plot2,
unbounded coords=jump]
\end{axis}

\begin{axis}[
view={0}{90},
width=4cm,
height=4cm,
scale only axis,
xmin=-2, xmax=1,
ymin=0, ymax=1.7,
at=(plot2.left of south west), anchor=right of south east,
unbounded coords=jump]
\end{axis}

\begin{axis}[
view={0}{90},
width=4cm,
height=4cm,
scale only axis,
xmin=-2, xmax=1,
ymin=0, ymax=1.7,
at=(plot2.right of south east), anchor=left of south west,
legend style={nodes=right,font=\tiny},
legend pos= north west,
unbounded coords=jump]

\end{axis}
\end{tikzpicture}

并且try2.tikz是:

\begin{tikzpicture}[font=\footnotesize\sffamily]

\begin{axis}[
view={0}{90},
width=4cm,
height=4cm,
scale only axis,
xmin=-4, xmax=1,
ymin=0, ymax=1.7,
name=plot2,
unbounded coords=jump]
\end{axis}

\begin{axis}[
view={0}{90},
width=4cm,
height=4cm,
scale only axis,
xmin=-4, xmax=1,
ymin=0, ymax=1.7,
at=(plot2.left of south west), anchor=right of south east,
unbounded coords=jump]
\end{axis}

\begin{axis}[
view={0}{90},
width=4cm,
height=4cm,
scale only axis,
xmin=-4, xmax=1,
ymin=0, ymax=1.7,
at=(plot2.right of south east), anchor=left of south west,
legend style={nodes=right,font=\tiny},
legend pos= north west,
unbounded coords=jump]
\end{axis}
\end{tikzpicture}

答案1

这立即引起了人们对groupplots图书馆的关注pgfplots

您的计划可以通过以下方式实现:

% \usepgfplotslibrary{groupplots}
\begin{tikzpicture}
  \begin{groupplot}[group style={rows=2,columns=3},
    view={0}{90},
    width=4cm,height=4cm,
    scale only axis,
    xmin=-2, xmax=1,
    bottom plots/.style={xmin=-4},
    ymin=0, ymax=1.7,unbounded coords=jump]
    \nextgroupplot
    \nextgroupplot
    \nextgroupplot
    \nextgroupplot[bottom plots]
    \nextgroupplot[bottom plots]
    \nextgroupplot[bottom plots]
  \end{groupplot}
\end{tikzpicture}

将会得到以下图像: 在此处输入图片描述

环境groupplot执行以下操作:

  1. 确定样式中的rows和的绘图数量。(也可以使用)columnsgroup stylegroup size=<cols> by <rows>
  2. 抓住每一个\nextgroupplot并按列顺序排列
  3. 每个都\nextgroupplot相当于\begin{axis} ... \end{axis}
  4. groupplot在环境中(而不是在样式中)指定的每个选项都group style将添加到每个\nextgroupplot宏中,从而添加到每个axis环境中。

如果您需要调整图之间的间距,您可以使用以下样式(应放在键内group style):

  • horizontal sep=<dim>
  • vertical sep=<dim>

因此你可以这样做:

 group style={vertical sep=0cm}

使它们在垂直方向上互相接触。pgfplots手册中有一整节关于此内容的内容,我强烈建议您阅读(它位于相关库)。

答案2

您可以使用该groupplots库:

\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary[pgfplots.groupplots]

\begin{document}
  \begin{figure}
    \begin{tikzpicture}[font=\footnotesize\sffamily]
      \begin{groupplot}[
          group style={group size=3 by 2},
          view={0}{90},
          width=4cm,
          height=4cm,
          scale only axis,
          xmin=-2, xmax=1,
          ymin=0, ymax=1.7,
          name=plot2,
          unbounded coords=jump]
        ]
        \nextgroupplot          \addplot [domain=-2:1, thick, cyan] {rnd};
        \nextgroupplot          \addplot [domain=-2:1, thick, cyan] {rnd};
        \nextgroupplot          \addplot [domain=-2:1, thick, cyan] {rnd};
        \nextgroupplot[xmin=-4] \addplot [domain=-4:1, thick, cyan] {rnd};
        \nextgroupplot[xmin=-4] \addplot [domain=-4:1, thick, cyan] {rnd};
        \nextgroupplot[xmin=-4] \addplot [domain=-4:1, thick, cyan] {rnd};
      \end{groupplot}
    \end{tikzpicture}
  \end{figure}
\end{document}

产生

在此处输入图片描述

所有图所共有的任何选项都可以作为命令的可选参数\begin{groupplot},而每个图所特有的任何选项都可以传递给\nextgroupplot命令。

为了区分顶部和底部的图,最好的方法可能是为所有图定义一种样式,就像 zeroth 的答案一样。所以我修改了我的答案,以显示如何将选项单独传递给每个图\nextgroupplot

相关内容