我并不拘泥于使用 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}