绘制满足不等式的整数点集

绘制满足不等式的整数点集

我想绘制平面中满足线性不等式的一定范围内的格点集。例如,所有 x 和 y 介于 0 到 10 之间的整数点 (x,y) 都满足 x + y <= 5。我曾尝试使用两个 for 循环来执行此操作,但这使 pgfplots 感到困惑:

\documentclass{article}
\usepackage{pgfplots}
\usepackage{pgffor}

\begin{document}

\begin{tikzpicture}
\begin{axis}[xmin=0,xmax=10,ymin=0,ymax=10]

\foreach \a in{0,...,10}{
\foreach \b in{0,...,5-\a}{

\draw (axis cs: \a,\b) circle;

}
}

\end{axis}
\end{tikzpciture}

\end{document}

提前致谢。

答案1

  • foreach循环不起作用pgfplots(与纯循环中的方式相同tikz)。
  • 类似的功能提供命令\pgfplotsinvokeforeach,但它不支持这些命令的简单嵌套

因此,对于所需的图像,最好坚持使用纯净的图像\tikz

\documentclass[margin=3mm]{standalone}
\usepackage{tikz}

\begin{document}
    \begin{tikzpicture}
% axis
\draw[<->]   (0,10) node[below left] {$y$} |- (10,0) node[below left] {$x$};
% dots of inequality
\foreach \x [count=\xi] in {0,...,5}
\foreach \y [count=\yi from 0] in {\x,...,5}
\fill   (\x,\yi) circle[radius=2pt];

    \end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

你可以draw使用grid选项line width=2pt, line cap=round, dash pattern=on 0pt off 1cm来获取整数点。然后clip得到你想要的。

在此处输入图片描述

\documentclass{article}

\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
\draw(0,10)node[left]{$y$}--(0,0)--(10,0)node[right]{$x$};
\clip[shift={(.1,.1)}](-1,6)--(6,-1)--(-1,-1)--cycle;
\draw[line width=2pt, line cap=round, dash pattern=on 0pt off 1cm](0,0) grid (10,10);
\end{tikzpicture}

\end{document}

答案3

\documentclass[tikz, border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
view={0}{90},
xmin=0, xmax=10,
ymin=0, ymax=10,
]
\addplot3[
only marks,
domain=0:10, samples=11,
domain y=0:10, samples y=11,
z filter/.expression={x+y<=5?z:nan},
] {0};
\end{axis}
\end{tikzpicture}
\end{document}

用三角形点阵网格

相关内容