
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:
Antwort1
Es sieht schrecklich aus, passt aber genau in ein 5 x 5 cm großes Rechteck.
\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}