保持绘图的纵横比,同时给出宽度和高度

保持绘图的纵横比,同时给出宽度和高度

好的,读完之后如何设置图框纵横比我可以用一个键来设置我的图的纵横比,即aspect ratio以给定widthheight它将缩放到该值并保持预定义的纵横比。

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

现在我想知道是否有可能有一个密钥,例如keepaspectratiographicx包中,即使给出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应该与第二个情节相同。

相关内容