我使用 Matplotlib/Python 生成了一些图形。
我想按行和按列/行显示它们。
这是我针对第一种情况的当前代码:
\begin{figure}[!htpb]
\centering
\subfloat[]{\includegraphics[width=5.3cm] {fig1}} \\
\vspace{-10pt}
\subfloat[]{\includegraphics[width=5.3cm] {fig2}} \\
\vspace{-10pt}
\subfloat[]{\includegraphics[width=5.3cm] {fig3}} \\
\end{figure}
结果如下:
可以注意到,最后一幅图像比其他图像“更大”,因为它的比例有两个而不是三个数字。
我正在考虑一种处理这个问题的方法。我考虑过把所有图形左对齐放在一个 minipage 中,尝试不同的大小,然后把这个 minipage 放在一个图形环境中,但这似乎不能解决问题:
\begin{figure}[!htpb]
\centering
\begin{minipage}{\columnwidth}
\subfloat[]{\includegraphics[width=5.3cm] {fig1}} \\
\vspace{-10pt}
\subfloat[]{\includegraphics[width=5.3cm] {fig2}} \\
\vspace{-10pt}
\subfloat[]{\includegraphics[width=5.3cm] {fig3}} \\
\end{minipage}
\end{figure}
答案1
为了保持每幅图像的“主”矩形大小相同,只需将每幅图像缩放相同的量即可
\subfloat[]{\includegraphics[scale=0.25] {fig1}} \\
不是
\subfloat[]{\includegraphics[width=5.3cm] {fig1}} \\
显然,精确的比例因子(这里是 0.25)将取决于您的原始图像大小,我不知道,但如果您指定它,而不是让 latex 计算比例,它们都会按相同的量缩放。
答案2
如果图形的主要部分具有相同的尺寸,则可以改用height
;据我所知,第一张图像与右侧的颜色条一起近似为正方形,因此您可以采用以下策略。
在序言中添加
\newlength{\imagewidth}
然后代码可以是
\begin{figure}[!htpb]
\centering
\settowidth{\imagewidth}{\includegraphics[height=5.3cm]{fig1}}
\subfloat[]{\includegraphics[height=5.3cm]{fig1}}\\[-10pt]
\subfloat[]{\includegraphics[height=5.3cm]{fig2}}\\[-10pt]
\subfloat[]{\makebox[\imagewidth][l]{\includegraphics[height=5.3cm]{fig3}}}
\end{figure}
这个诀窍\makebox
是为了获得对齐的子字幕。
答案3
我解决这个问题的方法是将所有图形合并到一个外部图形程序中(例如 Inkscape - 它是免费的,并且可以用于这类东西),然后将其插入。
这种方法的优点是你可以让事情保持一致确切地随心所欲。缺点是以后对模型进行任何更改时需要付出更多努力。