
Neste MWE, como posso tikzpicture
ajustar o espaço alocado do ambiente flutuante pai ( figure
ou subfigure
)?
\RequirePackage{luatex85}
\documentclass{article}
\usepackage{pgfplots,caption,subcaption,mwe}
\pgfplotsset{compat=newest}
\begin{document}
\begin{figure}
\begin{subfigure}[t]{0.3\textwidth}
\begin{tikzpicture}
\begin{axis}[enlargelimits=false]
\addplot graphics [
xmin=0,
xmax=50,
ymin=0,
ymax=150,
] {example-image-a};
\end{axis}
\end{tikzpicture}
\end{subfigure}
%
\begin{subfigure}[t]{0.3\textwidth}
\begin{tikzpicture}
\begin{axis}[enlargelimits=false]
\addplot graphics [
xmin=0,
xmax=50,
ymin=0,
ymax=150,
] {example-image-b};
\end{axis}
\end{tikzpicture}
\end{subfigure}
%
\begin{subfigure}[t]{0.3\textwidth}
\begin{tikzpicture}
\begin{axis}[enlargelimits=false]
\addplot graphics [
xmin=0,
xmax=50,
ymin=0,
ymax=150,
] {example-image-c};
\end{axis}
\end{tikzpicture}
\end{subfigure}
\end{figure}
\end{document}
Editar
A saída do código abaixo não faz com que as subfiguras se espalhem, \textwidth
apesar de tornar a largura de cada subfigura igual a 0.33\textwidth
.
\begin{figure}
\centering
\begin{subfigure}[t]{0.33\textwidth}
\begin{tikzpicture}
\begin{axis}[enlargelimits=false,width=\textwidth]
\addplot graphics [
xmin=0,
xmax=50,
ymin=0,
ymax=150,
] {example-image-a};
\end{axis}
\end{tikzpicture}
\end{subfigure}
%
\begin{subfigure}[t]{0.33\textwidth}
\begin{tikzpicture}
\begin{axis}[enlargelimits=false,width=\textwidth]
\addplot graphics [
xmin=0,
xmax=50,
ymin=0,
ymax=150,
] {example-image-b};
\end{axis}
\end{tikzpicture}
\end{subfigure}
%
\begin{subfigure}[t]{0.33\textwidth}
\begin{tikzpicture}
\begin{axis}[enlargelimits=false,width=\textwidth]
\addplot graphics [
xmin=0,
xmax=50,
ymin=0,
ymax=150,
] {example-image-c};
\end{axis}
\end{tikzpicture}
\end{subfigure}
\end{figure}
\lipsum[1]
Responder1
A razão pela qual você obtém a terceira subfigura em uma linha separada é que há um espaço entre as subfiguras. Uma quebra de linha no código é igual a um espaço, então você precisa de um %
after \end{subfigure}
. Ou seja, em vez de
\end{subfigure}
%
\begin..
você precisa
\end{subfigure}%
%
\begin..
ou
\end{subfigure}%
\begin..
Veja, por exemploQual é a utilidade dos sinais de porcentagem ( %
) no final das linhas?
O segundo problema é que a width
chave para a pgfplots
axis
não é realmente precisa. O pgfplots
que acontece é assumir que os ticklabels e os rótulos dos eixos ocupam 45 pontos de espaço fora do próprio eixo. Portanto, ele pega a largura especificada, subtrai 45pt e usa essa largura para o eixo.
Você não pode alterar 45pt para outra coisa, mas pode calcular a largura do seu próprio eixo e usar a scale only axis
tecla para dizer que o width
parâmetro se aplica ao eixo, desconsiderando os ticklabels/eixos.
Um método mais grosseiro é colocar o todo tikzpicture
em a \resizebox
e simplesmente escalá-lo até a largura da subfigura. O problema disso é que as fontes também são redimensionadas.
Por último, observe que se você não tiver legendas para eles, os subfigure
ambientes serão um tanto inúteis e poderão ser descartados.
A primeira linha mostra o efeito de \resizebox
, na segunda usei uma largura calculada para os eixos, e na terceira o mesmo, mas sem subfigure
ambientes. O showframe
pacote imprime uma moldura ao redor da área de texto, essas são as linhas vistas na captura de tela:
\RequirePackage{luatex85}
\documentclass{article}
\usepackage{pgfplots,subcaption,showframe}
\pgfplotsset{compat=newest}
\begin{document}
\begin{figure}
\centering
\begin{subfigure}[t]{0.33\textwidth}
\resizebox{\textwidth}{!}{\begin{tikzpicture}
\begin{axis}[enlargelimits=false,width=\textwidth]
\addplot graphics [
xmin=0,
xmax=50,
ymin=0,
ymax=150,
] {example-image-a};
\end{axis}
\end{tikzpicture}}
\end{subfigure}%
%
\begin{subfigure}[t]{0.33\textwidth}
\resizebox{\textwidth}{!}{\begin{tikzpicture}
\begin{axis}[enlargelimits=false,width=\textwidth]
\addplot graphics [
xmin=0,
xmax=50,
ymin=0,
ymax=150,
] {example-image-b};
\end{axis}
\end{tikzpicture}}
\end{subfigure}%
%
\begin{subfigure}[t]{0.33\textwidth}
\resizebox{\textwidth}{!}{\begin{tikzpicture}
\begin{axis}[enlargelimits=false,width=\textwidth]
\addplot graphics [
xmin=0,
xmax=50,
ymin=0,
ymax=150,
] {example-image-c};
\end{axis}
\end{tikzpicture}}
\end{subfigure}
\pgfmathsetlengthmacro{\myaxiswidth}{0.33\textwidth-width(" 150 ")}% subtract width of widest ticklabel, with a space on each side
\begin{subfigure}[t]{0.33\textwidth}
\begin{tikzpicture}
\begin{axis}[enlargelimits=false,width=\myaxiswidth,scale only axis]
\addplot graphics [
xmin=0,
xmax=50,
ymin=0,
ymax=150,
] {example-image-a};
\end{axis}
\end{tikzpicture}
\end{subfigure}%
%
\begin{subfigure}[t]{0.33\textwidth}
\begin{tikzpicture}
\begin{axis}[enlargelimits=false,width=\myaxiswidth,scale only axis]
\addplot graphics [
xmin=0,
xmax=50,
ymin=0,
ymax=150,
] {example-image-b};
\end{axis}
\end{tikzpicture}
\end{subfigure}%
%
\begin{subfigure}[t]{0.33\textwidth}
\begin{tikzpicture}
\begin{axis}[enlargelimits=false,width=\myaxiswidth,scale only axis]
\addplot graphics [
xmin=0,
xmax=50,
ymin=0,
ymax=150,
] {example-image-c};
\end{axis}
\end{tikzpicture}
\end{subfigure}
\begin{tikzpicture}
\begin{axis}[enlargelimits=false,width=\myaxiswidth,scale only axis]
\addplot graphics [
xmin=0,
xmax=50,
ymin=0,
ymax=150,
] {example-image-a};
\end{axis}
\end{tikzpicture}%
\begin{tikzpicture}
\begin{axis}[enlargelimits=false,width=\myaxiswidth,scale only axis]
\addplot graphics [
xmin=0,
xmax=50,
ymin=0,
ymax=150,
] {example-image-b};
\end{axis}
\end{tikzpicture}%
\begin{tikzpicture}
\begin{axis}[enlargelimits=false,width=\myaxiswidth,scale only axis]
\addplot graphics [
xmin=0,
xmax=50,
ymin=0,
ymax=150,
] {example-image-c};
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}