我想绘制 1/2*x(x+1) 函数,其值为 3 到 20 之间的整数,特别是我希望函数在这些点上绘制。到目前为止,我已成功创建以下图表,但显然这不是我想要的
这是我写的代码:
\begin{figure}
\begin{tikzpicture}
\begin{axis}[
xlabel={Numero di elementi},
ylabel={Numero di coppie},
xmin=3, xmax=20,
ymin=0, ymax=55,
xtick={1,...,20}
]
\addplot {0.5*x*(x-1)};
\end{axis}
\end{tikzpicture}
\end{figure}
那么我做错了什么?
答案1
您可以使用关键字调整计算/绘图范围domain
。如果您只想要 x 整数值的评估点,请使用关键字在范围内samples
选择适当的数字:samples
domain
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xlabel={Numero di elementi},
ylabel={Numero di coppie},
xmin=3, xmax=20,
ymin=0, %ymax=55,
xtick={1,...,20},
domain={3:20},
samples=18
]
\addplot {0.5*x*(x-1)};
\end{axis}
\end{tikzpicture}
\end{document}
答案2
这里的其他解决方案试图强制pgfplots
选择所需位置的样本。已经有一种非常明确的方法来指定您想要在哪里取样,那就是使用
samples at={<list>}
笔记:
- 的
samples at=
优先级高于samples
和domain
。因此,当指定时,samples
和domain
将被忽略。samples at=
- 如果您需要清除之前设置的
samples at=
列表,可以通过 进行清除samples at={}
。这将重新激活domain
密钥(以及samples
密钥,但文档没有明确指出这一点)。
代码:
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xlabel={Numero di elementi},
ylabel={Numero di coppie},
xmin=3, xmax=20,
ymin=0, ymax=55,
xtick={1,...,20},
samples at={3,...,20}
]
\addplot {0.5*x*(x-1)};
\end{axis}
\end{tikzpicture}
\end{document}
答案3
您可以使用\foreach
命令。
\begin{figure}
\begin{tikzpicture}
\begin{axis}[
xlabel={Numero di elementi},
ylabel={Numero di coppie},
xmin=3, xmax=20,
ymin=0, ymax=55,
xtick={1,...,20}
]
\foreach \n in {3,4,...,20}{
\addplot [mark=*] coordinates {(\n,{\n*(\n-1)/2})};
}
\end{axis}
\end{tikzpicture}
\end{figure}
但我不明白你为什么这么说,ymax=55
因为这样你只需要绘制 3 到 11 的点(其余的点不会出现)。如果你想让所有点都出现,你应该对其进行评论。