Tenho uma figura que possui três subfiguras semelhantes e uma de tamanho diferente (mostrando a legenda das outras três). Estou tendo problemas para fazer com que o tamanho e a colocação no documento pareçam bons.
Este é o meu código atual:
\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}
Todas as figuras foram cortadas o máximo que pude. Isto dá o seguinte resultado, onde a legenda é muito grande:
Mas então tento, por exemplo, mudar o último número para
\includegraphics[width=0.5\textwidth...]{...}
o espaçamento está desativado:
Nada mais que tentei funcionou também. Alguma ideia?
Responder1
Com o uso de \sbox{...}
você pode medir o tamanho das imagens à esquerda e depois acomodar sua imagem com legenda até sua altura:
\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}
O que dá (com o uso example-image
do graphicx
pacote):
Com suas imagens reais estimadas a partir da imagem em questão, a largura da imagem com legenda é mais estreita do que a de outra imagem, portanto, conseqüentemente, ela não se projetará fora da largura do texto.
Se a proporção da imagem não for essencial, você poderá limitar sua largura a uma fração da largura disponível, por exemplo:
\includegraphics[width=0.8\textwidth, height=\ht0]{example-image}
Neste caso a imagem fica:
Observação:para posicionamento de imagens na segunda linha, o parâmetro de posicionamento subfigure
é alterado de [b]
para [t]
. Seria bom fazer isso também para as subfiguras na primeira linha da imagem.
Termo aditivo:Outra possibilidade de ajustar a imagem à legenda é usar o seguinte código para a última subimagem:
\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}%
Considerando esta parte do código e após o corte apropriado de suas imagens originais, especial contendo legenda, meu MWE fornece:
São adicionados quadros ao redor das imagens para que seja melhor observar o corte das imagens. É claro que, em uso real, esses quadros tiveram de ser omitidos.
Note-se que a medição da altura da imagem considera a altura total da imagem (com espaço em branco ao seu redor). Considere esta altura que a imagem da legenda fica muito alta, então é necessário adicionar um espaço em branco abaixo dela que simula o texto abaixo do gráfico (rótulos de escala, rótulo de eixo) na imagem à esquerda. Eu estimo que essa altura equivalente é 3ex
a que adiciono aos valores de corte.
O código completo com quadros ao redor da imagem é:
\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}
Pelo código você pode observar que o principal problema era o corte incorreto da imagem com a legenda (você deixou o espaço em branco superior).
Responder2
A razão para a legenda ser deslocada dessa forma é porque a [b]
opção do subfigure
ambiente diz para alinhar o conteúdo na parte inferior; daí porque a parte inferior da legenda está no mesmo nível que a parte inferior do arquivo (c)
.
Se você quiser alinhar os centros de cada subfigura, use [c]
e se quiser alinhar o topo de cada subfigura, use [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}