我有一个图形,它有三个相似的子图形和一个不同大小的子图形(显示其他三个的图例)。我在调整大小和放置在文档中时遇到了问题。
这是我当前的代码:
\begin{figure}
\begin{subfigure}[b]{0.5\textwidth}
\centering
\includegraphics[width=\textwidth,trim=3mm 4mm 50mm 2mm, clip=true]{./Data_Figures/Coeff_evolution_LS_os.pdf}
\caption{}
\end{subfigure}%
\begin{subfigure}[b]{0.5\textwidth}
\centering
\includegraphics[width=\textwidth,trim=3mm 4mm 50mm 2mm, clip=true]{./Data_Figures/Coeff_evolution_IP_p.pdf}
\caption{}
\end{subfigure}%
\\
\begin{subfigure}[b]{0.5\textwidth}
\centering
\includegraphics[width=\textwidth,trim=3mm 4mm 50mm 2mm, clip=true]{./Data_Figures/Coeff_evolution_LS_p.pdf}
\caption{}
\end{subfigure}%
\begin{subfigure}[b]{0.5\textwidth}
\centering
\includegraphics[width=\textwidth,trim=5cm 1mm 5cm 5.2cm, clip=true]{./Data_Figures/Coeff_evo_legend.pdf}
\end{subfigure}%
\end{figure}
我尽可能地裁剪了所有图形。结果如下,其中图例太大:
但后来我尝试将最后一个数字改为
\includegraphics[width=0.5\textwidth...]{...}
间距关闭:
我尝试的其他方法也都不起作用。有什么想法吗?
答案1
通过使用,\sbox{...}
您可以测量左侧图像的尺寸,然后将您的图像与图例一起调整到其高度:
\documentclass{article}
\usepackage{subcaption}
\usepackage{graphicx}
\begin{document}
\begin{figure}
\begin{subfigure}[b]{0.5\textwidth}
\centering
\includegraphics[width=0.9\textwidth,trim=3mm 4mm 50mm 2mm, clip=true]{example-image-a}
\caption{}
\end{subfigure}%
\begin{subfigure}[b]{0.5\textwidth}
\centering
\includegraphics[width=0.9\textwidth,trim=3mm 4mm 50mm 2mm, clip=true]{example-image-b}
\caption{}
\end{subfigure}
\begin{subfigure}[t]{0.5\textwidth}
\centering
\includegraphics[width=0.9\textwidth,trim=3mm 4mm 50mm 2mm, clip=true]{example-image-c}
\caption{}
\end{subfigure}%
\begin{subfigure}[t]{0.5\textwidth}
\centering
\sbox0{\includegraphics[width=0.9\textwidth,trim=3mm 4mm 50mm 2mm, clip=true]{example-image-c}}%
\includegraphics[height=\ht0,keepaspectratio]{example-image}
\end{subfigure}%
\end{figure}
\end{document}
这给出(使用example-image
来自graphicx
包):
通过从您所讨论的图片估算真实图像,带有图例的图片的宽度比其他图片窄,因此它不会超出文本宽度。
如果图像的纵横比不是很重要,则可以将其宽度限制为可用宽度的一小部分,例如:
\includegraphics[width=0.8\textwidth, height=\ht0]{example-image}
在这种情况下,情况就变成:
笔记:对于第二行图像的定位,放置参数subfigure
从 更改为[b]
。[t]
对于图片第一行的子图,这样做也是很好的。
附录:将图像与图例相匹配的另一种可能性是对最后一个子图像使用以下代码:
\begin{subfigure}[t]{0.5\textwidth}
\sbox0{\includegraphics[width=0.9\textwidth,%
trim=3mm 4mm 55mm 2.5mm,clip]{./Data_Figures/Coeff_evolution_LS_p}}%
\centering
\framebox{\includegraphics[trim=52mm -3.5ex 52mm 53mm,clip,height=\ht0]{./Data_Figures/Coeff_evo_legend}}
\end{subfigure}%
考虑到这部分代码,并对原始图像进行适当修剪后,特别是包含图例的图像,我的 MWE 给出:
图像周围添加了边框,以便更好地观察图像的修剪。当然,在实际使用中必须省略这些边框。
请注意,图像高度的测量考虑了整个图像的高度(周围有空白)。考虑到这个高度,图例图像会变得太高,因此需要在其下方添加一个空白,以模拟左侧图像上图表下方的文本(刻度标签、轴标签)。我估计,等效高度是3ex
我添加到修剪值的高度。
带有图像框架的完整代码是:
\documentclass{article}
\usepackage{subcaption}
\usepackage{calc}
\usepackage{graphicx}
\begin{document}
\begin{figure}
\begin{subfigure}[b]{0.5\textwidth}
\centering
\framebox{\includegraphics[width=0.9\textwidth,%
trim=3mm 4mm 55mm 2.5mm,clip]{./Data_Figures/Coeff_evolution_LS_os}}
\caption{}
\end{subfigure}%
\begin{subfigure}[b]{0.5\textwidth}
\centering
\framebox{\includegraphics[width=0.9\textwidth,%
trim=3mm 4mm 55mm 2.5mm,clip]{./Data_Figures/Coeff_evolution_IP_p}}
\caption{}
\end{subfigure}
\bigskip
\begin{subfigure}[t]{0.5\textwidth}
\centering
\framebox{\includegraphics[width=0.9\textwidth,%
trim=3mm 4mm 55mm 2.5mm,clip]{./Data_Figures/Coeff_evolution_LS_p}}
\caption{}
\end{subfigure}%
\begin{subfigure}[t]{0.5\textwidth}
\sbox0{\includegraphics[width=0.9\textwidth,%
trim=3mm 4mm 55mm 2.5mm,clip]{./Data_Figures/Coeff_evolution_LS_p}}%
\centering
\includegraphics[trim=52mm -3.5ex 52mm 53mm,clip,height=\ht0]{./Data_Figures/Coeff_evo_legend}
\end{subfigure}
\end{figure}
\end{document}
从代码中您可以观察到,主要问题是图像与图例的修剪不当(左侧和顶部有空白)。
答案2
图例如此偏移的原因是因为[b]
环境选项subfigure
告诉它将内容对齐在底部;这就是为什么图例的底部与 的底部位于同一水平的原因(c)
。
如果要对齐每个子图的中心,请使用[c]
;如果要对齐每个子图的顶部,请使用[t]
:
\documentclass{article}
\usepackage{graphicx}
\usepackage{subcaption}
\begin{document}
\begin{figure}
\begin{subfigure}[c]{0.5\textwidth}
\centering
\includegraphics[width=\textwidth]{1.png}
\caption{Foo}
\end{subfigure}
\begin{subfigure}[c]{0.5\textwidth}
\centering
\includegraphics[width=\textwidth]{2.png}
\caption{Bar}
\end{subfigure}
\end{figure}
\end{document}