pgfplots Figura con ancho fijo

pgfplots Figura con ancho fijo

¿Cómo puedo crear una figura de pgfplots independiente con dimensiones totales establecidas, incluidas etiquetas de eje y entradas de leyenda?

Si configuro las dimensiones de la trama con width=5cm, height=5cm,pgfplots solo me da una cifra totalaproximadamenteeste tamaño. Además, si se coloca una leyenda fuera del cuadro del eje, las dimensiones de la leyenda se agregan a las dimensiones especificadas. El manual especifica (4.10.1 Opciones de escala comunes):

Tenga en cuenta que pgfplots solo estima el tamaño necesario para las etiquetas de eje y marca. La estimación supone una cantidad fija de espacio para cualquier cosa que esté fuera del cuadro del eje. Esto tiene el efecto de que las imágenes finales pueden ser ligeramente más grandes o ligeramente más pequeñas que las dimensiones prescritas.

y además

Si escala solo eje = falso (el valor predeterminado), pgfplotsintentarpara producir el ancho deseado, incluidas etiquetas, títulos y marcas.

Mi MWE:

\documentclass[crop]{standalone}

\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}

\begin{axis}[
%Grouping
    scale only axis=false,
    height=,
    width=10cm,
%Domain
    xmin=2000, xmax=2020,
    ymode=log,
%Ticks
    /pgf/number format/1000 sep={},
%Axis Labels
    ylabel= Price \text{[}\$(2020)/kg\text{]},
%Legend
    legend cell align={left},
    legend pos=outer north east,
    legend style={draw=none},
    legend entries={Entry},
]
\addplot[draw=none] coordinates {(2005,10000)};
\end{axis}

\end{tikzpicture}
\end{document}

A continuación se muestra la representación visual de la solución publicada porJohn Kormylo:

ingrese la descripción de la imagen aquí

Respuesta1

Tiene un aspecto horrible, pero encaja exactamente en un rectángulo de 5 x 5 cm.

manifestación

\documentclass[crop]{standalone}

\usepackage[utf8]{inputenc}
\usepackage{tikz}% reducndant
\usepackage{pgfplots}

\newsavebox{\temp}

\begin{document}
\savebox{\temp}{\begin{tikzpicture}

\begin{axis}[
%Grouping
    name=border,
    height=5cm,
    width=5cm,
%Domain
    xmin=2000, xmax=2020,
    ymode=log,
%Ticks
    /pgf/number format/1000 sep={},
%Axis Labels
    ylabel= Price \lbrack\$(2020)/kg\rbrack,
%Legend
    legend cell align={left},
    legend pos=outer north east,
    legend style={draw=none},
    legend entries={Entry},
]
\addplot[draw=none] coordinates {(2005,10000)};
\end{axis}

\end{tikzpicture}}% trial

\begin{tikzpicture}

\begin{axis}[
%Grouping
    name=border,
    height={\dimexpr 10cm-\ht\temp},
    width={\dimexpr 10cm-\wd\temp},
%Domain
    xmin=2000, xmax=2020,
    ymode=log,
%Ticks
    /pgf/number format/1000 sep={},
%Axis Labels
    ylabel= Price \lbrack\$(2020)/kg\rbrack,
%Legend
    legend cell align={left},
    legend pos=outer north east,
    legend style={draw=none},
    legend entries={Entry},
]
\addplot[draw=none] coordinates {(2005,10000)};
\end{axis}
\draw[red] (current bounding box.south west) rectangle (current bounding box.north east);
\draw[green] (current bounding box.south west) rectangle ++(5cm,5cm);

\end{tikzpicture}

\end{document}

información relacionada