具有奇数个图的 pgfplots groupplots 的垂直对齐

具有奇数个图的 pgfplots groupplots 的垂直对齐

我正在尝试在 pgfplots 中生成一个 2 列乘以 2/3 行的组图。第一列有 2 个图,第二列有 3 个图。我想将图较少的一侧的图高度分布为相同的外部边界框。

具有垂直对齐问题的奇数组图。

对第一列和第二列图使用两种不同的高度,至少在某种程度上,我可以使它们的总高度合适。但是,垂直方向上,第一行与两个第一行图(a 和 b)的中心对齐。我想要实现的是,第一行的边界框顶部垂直对齐,最后一个图的边界框底线对齐。

我发现anchor=north 这里,但它只会改变右侧图的位置 (b),然后与左侧垂直中心对齐(图 a)。即使我为两个图都添加了选项。

我的代码看起来有点像:

\documentclass{standalone}
% pictures drawn with TikZ
\usepackage{tikz,pgfplots}
\usetikzlibrary{pgfplots.groupplots} % needs to be loaded exactly like this
\pgfplotsset{compat=newest}

\begin{document}
\newcommand{\heightLarge}{4.7cm}

\begin{tikzpicture}
  \begin{groupplot}
[
group style={group size=2 by 3, % cols by rows
    horizontal sep=50pt,
},
  width= 0.385\textwidth,
  height=3.2cm,
  xmin=0,
  xmax=14,
  xlabel={time in s},
]

\nextgroupplot[% #1
  ymin=0.0,
  ymax=2/2,
  ylabel={a},
  height=\heightLarge,
]
\addplot[]{sin(x)};
 

\nextgroupplot[% #2
  ymin=0,
  ymax=0.2/0.03,
  ylabel={b},
]
\addplot[]{sin(x)};

\nextgroupplot[% #3
  ymin=-0.8,
  ymax=0.8,
  height=\heightLarge,
]
\addplot[]{sin(x)};
    
\nextgroupplot[% #4
  ymin=2.5/3,
  ymax=4.2/3,
]
\addplot[]{sin(x)};

  
\nextgroupplot[group/empty plot] % #5

\nextgroupplot[% #6
  ymin=0,
  ymax=60,
]
\addplot[]{sin(x)};
    
\end{groupplot}
\end{tikzpicture}%
\end{document}

答案1

我不认为它groupplot可以用于制作这样的布局。幸运的是,手动完成并不太难。

\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary{calc}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\pgfplotsset{
xmin=0, xmax=14, 
xlabel={time in s}, xlabel style={yshift=4pt},
}
\begin{axis}[
name=plot1,
width=5cm, height=5cm,
ymin=0, ymax=1,
]
\end{axis}
\begin{axis}[
name=plot2, at={($(plot1.south west)+(0,-1cm)$)}, anchor=north west,
width=5cm, height=5cm,
ymin=-1, ymax=1,
]
\end{axis}
\begin{axis}[
name=plot3, at={($(plot1.north east)+(1.5cm,0)$)}, anchor=north west,
width=5cm, height=3.5cm,
ymin=0, ymax=6,
]
\end{axis}
\begin{axis}[
name=plot4, at={($(plot1.north east)!0.5!(plot2.south east)+(1.5cm,0)$)}, anchor=west,
width=5cm, height=3.5cm,
ymin=0.5, ymax=1.4,
]
\end{axis}
\begin{axis}[
name=plot5, at={($(plot2.south east)+(1.5cm,0)$)}, anchor=south west,
width=5cm, height=3.5cm,
ymin=0, ymax=60,
]
\end{axis}
\end{tikzpicture}
\end{document}

网格中的五个空图表

编辑:包含七张图表的布局

\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary{calc}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\pgfplotsset{xmin=0, xmax=1, ymin=0, ymax=1, width=5cm, height=3cm}
\begin{axis}[name=plot1] \end{axis}
\begin{axis}[name=plot2, at={($(plot1.south west)+(0,-2cm)$)}, anchor=north west] \end{axis}
\begin{axis}[name=plot3, at={($(plot2.south west)+(0,-2cm)$)}, anchor=north west] \end{axis}
\begin{axis}[name=plot4, at={($(plot1.north east)+(1cm,0)$)},  anchor=north west] \end{axis}
\begin{axis}[name=plot7, at={($(plot3.south east)+(1cm,0)$)},  anchor=south west] \end{axis}
\begin{axis}[name=plot5, at={($(plot4)!1/3!(plot7)$)},  anchor=center] \end{axis}
\begin{axis}[name=plot6, at={($(plot4)!2/3!(plot7)$)},  anchor=center] \end{axis}
\end{tikzpicture}
\end{document}

网格中的七个图表

相关内容