
Как создать отдельный рисунок pgfplots с заданными общими размерами, включая метки осей и записи легенды?
Если я задаю размеры графика с помощью width=5cm, height=5cm,
pgfplots, то получаю только общую цифрупримерноэтот размер. Кроме того, если легенда размещена за пределами поля оси, размеры легенды добавляются к указанным размерам. В руководстве указано (4.10.1 Общие параметры масштабирования):
Обратите внимание, что pgfplots оценивает только размер, необходимый для меток осей и делений. Оценка предполагает фиксированное количество пространства для всего, что находится за пределами поля оси. Это приводит к тому, что окончательные изображения могут быть немного больше или немного меньше предписанных размеров.
и далее
Если scale only axis=false (по умолчанию), pgfplots будетпытатьсядля создания желаемой ширины, включая метки, заголовки и отметки.
Мой МВЭ:
\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}
Ниже представлено визуальное представление решения, опубликованногоДжон Кормило:
решение1
Выглядит ужасно, но точно вписывается в прямоугольник 5 на 5 см.
\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}