pgfplots Abbildung mit fester Breite

pgfplots Abbildung mit fester Breite

Wie kann ich eine eigenständige pgfplots-Abbildung mit festgelegten Gesamtabmessungen, einschließlich Achsenbeschriftungen und Legendeneinträgen, erstellen?

Wenn ich die Plot-Dimensionen mit width=5cm, height=5cm,pgfplots einstelle, erhalte ich nur eine Gesamtzahletwadiese Größe. Wenn eine Legende außerhalb des Achsenfelds platziert wird, werden außerdem die Legendenabmessungen zu den angegebenen Abmessungen addiert. Das Handbuch gibt an (4.10.1 Allgemeine Skalierungsoptionen):

Bitte beachten Sie, dass pgfplots nur die für Achsen- und Teilstrichbeschriftungen benötigte Größe schätzt. Die Schätzung geht von einem festen Platz für alles aus, was sich außerhalb des Achsenfelds befindet. Dies hat zur Folge, dass die endgültigen Bilder etwas größer oder etwas kleiner als die vorgeschriebenen Abmessungen sein können.

und weiter

Wenn scale only axis=false (Standard), wird pgfplotsversuchenum die gewünschte Breite inklusive Beschriftungen, Titeln und Teilstrichen zu erzeugen.

Mein 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}

Unten sehen Sie die visuelle Darstellung der Lösung, die gepostet wurde vonJohannes Kormylo:

Bildbeschreibung hier eingeben

Antwort1

Es sieht schrecklich aus, passt aber genau in ein 5 x 5 cm großes Rechteck.

Demo

\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}

verwandte Informationen