pgfplots:选择分区数

pgfplots:选择分区数

我并不拘泥于使用 pgfplots 来生成此内容,因此请随意提出建议。

对于我的试卷,我想为学生提供空白的半对数网格来绘制手绘图。(具体来说,他们正在制作 Bode 图)。

以下定义近似于我想要的行为。唯一的问题是控制沿 y 的划分:

\NewDocumentCommand\BodeGrid{mmmm}{
\pgfplotsset{width=#1, height=#2}
\begin{tikzpicture}
\begin{axis}[
    xmode=log,
    xmin=1e0, xmax=1e#3,
    ymin=0, ymax=#4,
    grid=both,
    major grid style={black!50},
    yticklabels={},
    xticklabels={},
]
\end{axis}
\end{tikzpicture}
}

这里的参数是宽度和高度,然后我要指定沿 x 的十进制数,然后指定沿 y 的分割数。如果我提供一个整数,x 轴工作得很好,因为它会根据范围自动生成适当的十进制数。然而,y 轴则取决于自动分割轴的代码。对于某些整数范围(对于 y,第 4 个参数),此命令实际上可以完成我想要的操作。

例如, \BodeGrid{\textwidth}{0.75\textheight}{3}{12} 生成:

在此处输入图片描述

答案1

您的图没有实际点,因此pgfplots很聪明,无需费心。如果您假装自己正在绘制某些东西,它会配合。

\documentclass{standalone}
\usepackage{pgfplots}
\newcommand{\BodeGrid}[4]{\begin{tikzpicture}
\begin{axis}[width=#1, height=#2,
    xmode=log,
    xmin=1e0, xmax=1e#3,
    ymin=0, ymax=#4,
    grid=both,
    major grid style={black!50},
    yticklabels={},
    xticklabels={},
    ytick={1,...,#4}
]
\addplot[draw=none,no marks] coordinates {(0,1) (1e#3,#4)};
\end{axis}
\end{tikzpicture}}
\begin{document}
 \BodeGrid{\textwidth}{0.75\textheight}{6}{9}
\end{document}

在此处输入图片描述

相关内容