
Итак, после прочтениякак установить соотношение сторон области графикаЯ могу задать соотношение сторон моих графиков с помощью ключа, а именно aspect ratio
таким образом, что при задании width
или height
он будет масштабироваться до этого значения, а также сохранять предопределенное соотношение сторон.
\pgfplotsset{aspect ratio/.code args={#1:#2}{%
\def\axisdefaultwidth{#1 cm}%
\def\axisdefaultheight{#2 cm}%
}
Теперь мне стало интересно, возможно ли иметь ключ, такой как keepaspectratio
из graphicx
пакета, который даже если его датьheight
и width
полученный график автоматически проигнорирует одно из измерений, чтобы сохранить ранее определенное соотношение сторон. Что-то вроде:
\pgfplotsset{keep aspect ratio/.code={%
\pgfmathsetmacro{\currentratio}{\currentwidth/\currentheight}%
\ifnum\currentratio<\predefinedratio%
ignore height%
\else%
ignore width%
\fi%
}
Вот фиктивный MWE для тестирования:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{aspect ratio/.code args={#1:#2}{%
\def\axisdefaultwidth{#1 cm}%
\def\axisdefaultheight{#2 cm}},
compat=newest
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[aspect ratio=16:9, width=.8\textwidth]
\addplot[domain=0:10] {0.5*x+6};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[aspect ratio=4:3, width=.8\textwidth]
\addplot[domain=0:10] {0.5*x+6};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[aspect ratio=4:3,
width=.8\textwidth,
height=.8\textheight,
%keep aspect ratio
]
\addplot[domain=0:10] {0.5*x+6};
\end{axis}
\end{tikzpicture}
\end{document}
Само собой разумеется, что третий участок после раскомментирования keep aspect ratio
должен быть таким же, как и второй участок.