\documentclass[tikz,11pt]{standalone}

\usepackage{tikz}

\pgfmathsetmacro{\gridLineWidth}{0.6pt}
\pgfmathsetmacro{\polytopeLineWidth}{1.2pt}
\pgfmathsetmacro{\dotSize}{0.5mm}
\definecolor{fillColor}{rgb}{0.8,0.8,0.8}
\pgfmathsetmacro{\opacity}{0.7}

\begin{document}
\begin{tikzpicture}
  % (1, 1, 1)
  \begin{scope}[yshift=5.2cm, scale=0.7]
    \node at (-5, 0) {$\mathbf{q} = (1, 1, 1)$};
    
    \begin{scope}
      \node at (0, -3.3) {$\nabla = \Delta^{\!*}$};

      \clip (0,0) circle (2.7);

      \path [draw, fill opacity=\opacity, fill=fillColor, line width=\polytopeLineWidth] (1, 0) --(0, 1) --(-1, -1) --cycle;

      % \draw[step=1, dotted, line width=\gridLineWidth] (-10, -10) grid (10, 10);
      \path [draw, line width=\gridLineWidth] (-10, 0) --(10, 0) (0, -10) --(0, 10);

      \foreach \i in {-2,...,2}
      \foreach \j in {-2,...,2}{
        \node at (\i, \j) [circle, fill, inner sep=\dotSize] {};
      };
    \end{scope}

    \begin{scope}[xshift=6.5cm]
      \node at (0, -3.3) {$\nabla^* = \Delta$};

      \clip (0,0) circle (2.7);
      \begin{scope}
        \path [draw, fill opacity=\opacity, fill=fillColor, line width=\polytopeLineWidth] (-1, 2) --(2, -1) --(-1, -1) --cycle;

        % \draw[step=1, dotted, line width=\gridLineWidth] (-10, -10) grid (10, 10);
        \path [draw, line width=\gridLineWidth] (-10, 0) --(10, 0) (0, -10) --(0, 10);

        \foreach \i in {-2,...,2}
        \foreach \j in {-2,...,2}{
          \node at (\i, \j) [circle, fill, inner sep=\dotSize] {};
        };
      \end{scope}
    \end{scope}
  \end{scope}

  % (1, 1, 2)
  \begin{scope}[yshift=0cm, scale=0.7]
    \node at (-5, 0) {$\mathbf{q} = (1, 1, 2)$};

    \begin{scope}
      \node at (0, -3.3) {$\nabla = \Delta^{\!*}$};

      \clip (0,0) circle (2.7);
      \begin{scope}[scale=1.4142] % sqrt(2)
        \path [draw, fill opacity=\opacity, fill=fillColor, line width=\polytopeLineWidth] (1, 0) --(0, 1) --(-1/2, -1/2) --cycle;

        % \draw[step=1, dotted, line width=\gridLineWidth] (-10, -10) grid (10, 10);
        \path [draw, line width=\gridLineWidth] (-10, 0) --(10, 0) (0, -10) --(0, 10);

        \foreach \i in {-2,...,2}
        \foreach \j in {-2,...,2}{
          \node at (\i / 2 - \j / 2, \i / 2 + \j / 2) [circle, fill, inner sep=\dotSize] {};
        };
      \end{scope}
    \end{scope}

    \begin{scope}[xshift=6.5cm]
      \node at (0, -3.3) {$\nabla^* = \Delta$};

      \clip (0,0) circle (2.7);
      \begin{scope}[scale=0.707]
        \path [draw, fill opacity=\opacity, fill=fillColor, line width=\polytopeLineWidth] (-1, 3) --(3, -1) --(-1, -1) --cycle;

        % \draw[step=1, dotted, line width=\gridLineWidth] (-10, -10) grid (10, 10);
        \path [draw, line width=\gridLineWidth] (-10, 0) --(10, 0) (0, -10) --(0, 10);

        \foreach \i in {-2,...,2}
        \foreach \j in {-2,...,2}{
          \node at (\i - \j, \i + \j) [circle, fill, inner sep=\dotSize] {};
        };
      \end{scope}
    \end{scope}
  \end{scope}

  % (1, 2, 3)
  \begin{scope}[yshift=-5.2cm, scale=0.7]
    \node at (-5, 0) {$\mathbf{q} = (1, 2, 3)$};

    \begin{scope}
      \node at (0, -3.3) {$\nabla = \Delta^{\!*}$};

      \clip (0,0) circle (2.7);
      \begin{scope}[scale=1.732] % sqrt(3)
        \path [draw, fill opacity=\opacity, fill=fillColor, line width=\polytopeLineWidth] (1, 0) --(0, 1) --(-1/3, -2/3) --cycle;

        % \draw[step=1, dotted, line width=\gridLineWidth] (-10, -10) grid (10, 10);
        \path [draw, line width=\gridLineWidth] (-10, 0) --(10, 0) (0, -10) --(0, 10);

        \foreach \i in {-2,...,2}
        \foreach \j in {-4,...,4}{
          \node at (\i / 3 - \j / 3, \i * 2 / 3 + \j / 3) [circle, fill, inner sep=\dotSize] {};
        };
      \end{scope}
    \end{scope}

    \begin{scope}[xshift=6.5cm]
      \node at (0, -3.3) {$\nabla^* = \Delta$};

      \clip (0,0) circle (2.7);
      \begin{scope}[scale=0.577]
        \begin{scope}[xshift=-2cm]
          \path [draw, fill opacity=\opacity, fill=fillColor, line width=\polytopeLineWidth] (5, -1) --(-1, 2) --(-1, -1) --cycle;

          % \draw[step=1, dotted, line width=\gridLineWidth] (-10, -10) grid (10, 10);
          \path [draw, line width=\gridLineWidth] (-10, 0) --(10, 0) (0, -10) --(0, 10);

          \foreach \i in {-1,...,3}
          \foreach \j in {-4,...,4}{
            \node at (3 * \i + \j, \j) [circle, fill, inner sep=\dotSize] {};
          };
        \end{scope}
      \end{scope}
    \end{scope}
  \end{scope}

\end{tikzpicture}
\end{document}
