subfigure和minipage进行图片排版
首先展示了效果图,紧接着展示了效果图代码,最后对subfigure和minipage进行解释。
一、效果展示
从整体来看,是二行五列,其中 第三、四、五列共享一个子标题 c。同时,在每行图片的最左边有左标注给出小标题。
二、Latex代码
使用figure和subfigure必须引相应的包”\usepackage{graphicx}”和”\usepackage{subfigure}”
\begin{figure*}[htbp]
\centering
%第一行图片展示
\subfigure{
%左标题1
\rotatebox{90}{\scriptsize{~~~~~~~~~~~~~Title1}}
\begin{minipage}[t]{0.185\linewidth}
\centering
\includegraphics[width=1\linewidth]{pic/1-1.png}
\end{minipage}
}
\subfigure{
\begin{minipage}[t]{0.185\linewidth}
\centering
\includegraphics[width=1\linewidth]{pic/1-1.png}
\end{minipage}
}
\subfigure{
\begin{minipage}[t]{0.185\linewidth}
\centering
\includegraphics[width=1\linewidth]{pic/1-1.png}
\end{minipage}
\begin{minipage}[t]{0.185\linewidth}
\centering
\includegraphics[width=1\linewidth]{pic/1-1.png}
\end{minipage}
\begin{minipage}[t]{0.185\linewidth}
\centering
\includegraphics[width=1\linewidth]{pic/1-1.png}
\end{minipage}
}
% 两行图片的间隙有点大,通过vspace进行微调
\vspace{-3mm}
% 由于上面已经用了subfigure,下面我们希望从 a 重新编号,而不是从 d 开始,清零。
\setcounter{subfigure}{0}
% 第二行图片展示
\subfigure[Title1]{
% 左标题2
\rotatebox{90}{\scriptsize{~~~~~~~~~~~~~Title2}}
\begin{minipage}[t]{0.185\linewidth}
\centering
\includegraphics[width=1\linewidth]{pic/1-1.png}
\end{minipage}
}
\subfigure[Title2]{
\begin{minipage}[t]{0.185\linewidth}
\centering
\includegraphics[width=1\linewidth]{pic/1-1.png}
\end{minipage}
}
\subfigure[Title3]{
\begin{minipage}[t]{0.185\linewidth}
\centering
\includegraphics[width=1\linewidth]{pic/1-1.png}
\end{minipage}
\begin{minipage}[t]{0.185\linewidth}
\centering
\includegraphics[width=1\linewidth]{pic/1-1.png}
\end{minipage}
\begin{minipage}[t]{0.185\linewidth}
\centering
\includegraphics[width=1\linewidth]{pic/1-1.png}
\end{minipage}
}
% 添加题注,即对这个图片的说明
\caption{This a caption.This a caption.This a caption.This a caption.}
\label{fig:result_include1}
\end{figure*}
代码解释:
1>创建subfigure和minipage:首先创建subfigure,可以为每个图片创建一个subfigure,也可以多个图片放到subfigure,这个后面会说。多个subfigure利用 Enter 留出一个空行就可以起到换行的作用。对于多个图片共享一个子标题,那就是这个subfigure创建多个minipage,每个minipage放一个图片,或者创建一个minipage,利用 includegraphics 导入多张图片,这个后面会提到。
2>添加图片下方标题:通过创建subfigure,很容易可以添加图片下方的小标题,需要注意,这里用到了subfigure的序号清零。
3>添加左标题:通过使用 \scriptsize 来添加左标题,并利用 rotatebox 进行旋转90度,达到图片所示的效果。注意:左标注这里,我尝试了许多方法都无法居中,所以采用了 ~ 作为空格进行顶位,达到居中的效果。
三、subfigure和minipage的个人理解
1> subfigure:作用是定义图片区域,当采用多个subfigure时,默认按a b c d的子标题进行排序。subfigure内部自己不支持换行,需要结合minipage使用。当minipage导入多张图片或者多个minipage导入图片时(理论可以,没试),可使用 \\ 和 vspace进行换行。\vspace用来控制垂直间距
2> minipage放到subfigure里面,相当于又开辟了一个子页面。
下面是另外一个博主的示例和代码,这个和我上面的写法不一样,对subfigure和minipage的学习有重要借鉴重要:
样例效果:
Latex代码:
\begin{figure*}
\centering
\subfigure[Input]{
% minipage中放置4张图,通过vspace进行换行调整,但是都在subfigure下面,共享一个子标题
\begin{minipage}[b]{0.23\linewidth}
\includegraphics[width=1\linewidth]{a1.jpg}\vspace{4pt}
\includegraphics[width=1\linewidth]{a2.jpg}\vspace{4pt}
\includegraphics[width=1\linewidth]{a3.jpg}\vspace{4pt}
\includegraphics[width=1\linewidth]{a4.jpg}
\end{minipage}}
\subfigure[CE]{
\begin{minipage}[b]{0.23\linewidth}
\includegraphics[width=1\linewidth]{b1.jpg}\vspace{4pt}
\includegraphics[width=1\linewidth]{b2.jpg}\vspace{4pt}
\includegraphics[width=1\linewidth]{b3.jpg}\vspace{4pt}
\includegraphics[width=1\linewidth]{b4.jpg}
\end{minipage}}
\subfigure[Ours]{
\begin{minipage}[b]{0.23\linewidth}
\includegraphics[width=1\linewidth]{c1.jpg}\vspace{4pt}
\includegraphics[width=1\linewidth]{c2.jpg}\vspace{4pt}
\includegraphics[width=1\linewidth]{c3.jpg}\vspace{4pt}
\includegraphics[width=1\linewidth]{c4.jpg}
\end{minipage}}
\subfigure[GT]{
\begin{minipage}[b]{0.23\linewidth}
\includegraphics[width=1\linewidth]{d1.jpg}\vspace{4pt}
\includegraphics[width=1\linewidth]{d2.jpg}\vspace{4pt}
\includegraphics[width=1\linewidth]{d3.jpg}\vspace{4pt}
\includegraphics[width=1\linewidth]{d4.jpg}
\end{minipage}}
\caption{description of figure}
\end{figure*}