我正在声明一个环境来帮助绘制二项分布。赋予此类函数的自然参数之一是“n”,即试验次数。但是,我的绘图函数需要绘制 0 .. n-1 个样本。我发现我无法在 pgfplotsset 中执行“-1”。有人能帮我做这个吗?MWE:
\documentclass{minimal}
\usepackage{pgfplots}
\newenvironment{BinomDist}[1]{%
\pgfplotsset{DistAxis/.style={%
samples at={0,...,#1} % Want this to say ``#1-1'' or equiv.
}
}
}{}
\begin{document}
\begin{BinomDist}{8}
\begin{tikzpicture}
\begin{axis}[DistAxis]
\addplot [draw=black] {x};
\end{axis}
\end{tikzpicture}
\end{BinomDist}
\end{document}
答案1
这很简单:samples at={0,...,\the\numexpr#1-1}
。
\documentclass{article}
\usepackage{pgfplots}
%\pgfplotsset{compat=1.16} %<-consider using this
\newenvironment{BinomDist}[1]{%
\pgfplotsset{DistAxis/.style={%
samples at={0,...,\the\numexpr#1-1}
}
}
}{}
\begin{document}
\begin{BinomDist}{8}
\begin{tikzpicture}
\begin{axis}[DistAxis]
\addplot [draw=black] {x};
\end{axis}
\end{tikzpicture}
\end{BinomDist}
\end{document}
顺便说一句,请考虑不要使用该类minimal
,并指明版本。
对于更复杂的情况,您可能需要code
使用\pgfmathtruncatemacro
。
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16} %<-consider using this
\newenvironment{BinomDist}[1]{%
\pgfplotsset{DistAxis/.code={%
\pgfmathtruncatemacro{\iMax}{pow(2,#1-1)}%
\pgfplotsset{samples at={0,...,\iMax}}%
}
}
}{}
\begin{document}
\begin{BinomDist}{8}
\begin{tikzpicture}
\begin{axis}[DistAxis]
\addplot [draw=black] {x};
\end{axis}
\end{tikzpicture}
\end{BinomDist}
\end{document}