Mantener la relación de aspecto de una trama mientras se proporciona ancho y alto

Mantener la relación de aspecto de una trama mientras se proporciona ancho y alto

Ok, entonces después de leercómo configurar la relación de aspecto del cuadro de trazadoPuedo establecer la relación de aspecto de mis gráficos con una clave, es decir, aspect ratiode manera que, dado widtho, heightse escale a este valor y también mantenga la relación de aspecto predefinida.

\pgfplotsset{aspect ratio/.code args={#1:#2}{%
  \def\axisdefaultwidth{#1 cm}%
  \def\axisdefaultheight{#2 cm}%
}

Ahora me preguntaba si era posible tener una clave como la keepaspectratiodel graphicxpaquete que, incluso si se entregaraheight y widthel gráfico resultante ignoraría automáticamente una de las dimensiones para mantener la relación de aspecto previamente definida. Algo como:

\pgfplotsset{keep aspect ratio/.code={%
  \pgfmathsetmacro{\currentratio}{\currentwidth/\currentheight}%
  \ifnum\currentratio<\predefinedratio%
     ignore height%
  \else%
     ignore width%
  \fi%
}

Aquí hay un MWE ficticio para probar:

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

No hace falta decir que la tercera trama, después de descomentar, keep aspect ratiodebería ser la misma que la segunda trama.

información relacionada