复杂子图网格

复杂子图网格

我想将四个子图排列成一个 2×2 的网格,其中网格元素的高度各不相同;如下所示:

|------|  |----------|
|------|  |----------|
|------|  |----------|
|------|       c)
|------|
|------|  |----------|
|------|  |----------|
   a)     |----------|
          |----------|
|------|  |----------|
|------|  |----------|
|------|  |----------|
   b)          d)

在此处输入图片描述

这可能吗?我尝试适应此解决方案对于类似的问题,但无法让它满足我的复杂要求。


更新

看到一些非常有用的答案后,我意识到我没有准确说明我的要求。特别是,每列的高度总和不相等。因此,我想对齐每列的基数,如下所示:

|------|  
|------|  |----------|
|------|  |----------|
|------|  |----------|
|------|       c)
|------|  
|------|  |----------|
   a)     |----------|
          |----------|
|------|  |----------|
|------|  |----------|
|------|  |----------|
   b)          d)

答案1

应用链接的解决方案实际上非常简单 - 只需添加所需的高度:

\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{subcaption}

\begin{document}
\begin{figure}[ht]
  \centering
  \parbox{\textwidth}{
    \parbox{.3\textwidth}{%
      \subcaptionbox{}{\includegraphics[width=\hsize, height=4cm]{imageA}}
      \vskip1em
      \subcaptionbox{}{\includegraphics[width=\hsize, height=2cm]{imageB}}
    }
    \hskip1em
    \parbox{.3\textwidth}{%
      \subcaptionbox{}{\includegraphics[width=\hsize, height=2cm]{imageC}}
      \vskip1em
      \subcaptionbox{}{\includegraphics[width=\hsize, height=4cm]{imageD}} 
    }
  }
\end{figure}
\end{document}

在此处输入图片描述

编辑:如果要对齐柱子的底部,可以通过指定 parbox 的垂直对齐来实现:

\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{subcaption}

\begin{document}
\begin{figure}[ht]
  \centering
  \parbox{\textwidth}{
    \parbox[b]{.3\textwidth}{%
      \subcaptionbox{}{\includegraphics[width=\hsize, height=4cm]{imageA}}
      \vskip1em
      \subcaptionbox{}{\includegraphics[width=\hsize, height=2cm]{imageB}}
    }
    \hskip1em
    \parbox[b]{.3\textwidth}{%
      \subcaptionbox{}{\includegraphics[width=\hsize, height=2cm]{imageC}}
      \vskip1em
      \subcaptionbox{}{\includegraphics[width=\hsize, height=4cm]{imageD}} 
    }
  }
\end{figure}
\end{document}

在此处输入图片描述

答案2

这是在最右侧列图像上使用小页面环境的解决方案。

\documentclass[]{article}
\usepackage[]{subfig}
\usepackage[demo]{graphicx}

\begin{document}

    \begin{figure}
        \centering
        \subfloat[][]{\includegraphics[width=3cm,height=8cm]{imageA}}\quad
        \begin{minipage}[t]{4cm}
            \vspace{-8cm}
            \subfloat[][]{\includegraphics[width=4cm,height=4cm]{imageA}}
        \end{minipage}\\[12pt] 
        \subfloat[][]{\includegraphics[width=3cm,height=2cm]{imageA}}
        \quad
        \begin{minipage}[t]{4cm}
            \vspace{-6cm}
            \subfloat[][]{\includegraphics[width=4cm,height=6cm]{imageA}}
            \end{minipage}
        \end{figure}

\end{document}

在此处输入图片描述

答案3

使用 可以很容易地获得此布局\valign

该命令\subcaptionpartial的语法为

\subcaptionpartial[<list entry>]{<subcaption>}{<image>}

并且,与 一样\subcaptionbox\label应该放在第一个强制参数中。如果缺失,则可选参数将被视为与 的第一个强制参数相同,与 一样\caption

\documentclass{article}
\usepackage{graphicx}
\usepackage{subcaption}
\usepackage{xparse}

\NewDocumentEnvironment{subcaptioncolumns}{}
 {\def\\{\unskip\unskip\cr\noalign{\hspace{1em}}}\valign\bgroup\vfil##\cr}
 {\unskip\unskip\crcr\egroup}
\NewDocumentCommand{\subcaptionpartial}{O{#2}mm}{%
  \hbox{\subcaptionbox[#1]{#2}{#3}}\medskip
}

\begin{document}

\begin{figure}
\centering

\begin{subcaptioncolumns}
\subcaptionpartial{\label{one}}{%
  \includegraphics[width=4cm,height=6cm]{example-image}%
}
\subcaptionpartial{\label{two}}{%
  \includegraphics[width=4cm,height=3cm]{example-image}%
}
\\
\subcaptionpartial{\label{three}}{%
  \includegraphics[width=4cm,height=4cm]{example-image}%
}
\subcaptionpartial{\label{four}}{%
  \includegraphics[width=4cm,height=4cm]{example-image}%
}
\end{subcaptioncolumns}

\caption{Whatever}\label{full}

\end{figure}

\end{document}

在此处输入图片描述

相关内容