绘制相同尺寸的点-修改代码

绘制相同尺寸的点-修改代码

我正在尝试使用以下代码绘制相同尺寸的点。我的目标是修改以下代码以获得正确的结果(我想避免使用不同的代码):

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{fadings,shapes.arrows,shadows}
\usepackage{xparse}



\def\height{3.6/3}
\def\width{3.9}
\def\numpoints{60}
\def\maxpointwidth{2}


\title{\textbf{Cerchi}}
\date{\vspace{-10ex}}

\begin{document}

\maketitle

\begin{center}
    \begin{tikzpicture}
    \draw[cyan,fill=cyan](0,0) -- (4,0) -- (4,4/3) -- (0,4/3) -- (0,0);
        \draw(0,0) -- (4,0) -- (4,4) -- (0,4) -- (0,0);

        \foreach \point in {1,...,\numpoints}{
        \pgfmathparse{random()}
        \pgfmathsetmacro\xpos{\width*\pgfmathresult}
        \pgfmathparse{random()}
        \pgfmathsetmacro\ypos{\height*\pgfmathresult}
        \pgfmathrandom{0.1,\maxpointwidth}
        \let\pointwidth\pgfmathresult

        \node[circle,inner sep=\pointwidth pt,fill=yellow] (point-\point) at (\xpos,\ypos) {};
}
    \end{tikzpicture}
\end{center}

\end{document}

在此处输入图片描述

一位同事告诉我解决方案是使用 height rect=4,width rect=8 这两个键,但我不知道如何使用它。

非常感谢你的帮助。

答案1

点的大小由\pointwidth宏决定。inner sep实际上设置了从节点内容到节点边缘的距离,因此它与半径有关。设置可能更可预测inner sep=0pt,minimum size=\pointwidth,其中minimum size是点的直径。

所做\pgfmathrandom{0.1,\maxpointwidth} \let\pointwidth\pgfmathresult的就是将其设置\pointwidth为 0.1 到 之间的随机值\maxpointwidth。您想要禁用随机化,因此请将其设置\pointwidth为固定值。

下面是稍微不同的实现,但大部分是相同的:

代码输出

\documentclass{article}
\usepackage{tikz}

% \newcommand is safer than \def, you wont accidentally overwrite an existing macro
\newcommand\height{3.6/3}
\newcommand\width{3.9}
\newcommand\numpoints{60}
% new macro, to set point size
\newcommand\pointwidth{4pt}

\title{\textbf{Cerchi}}
\date{\vspace{-10ex}}

\begin{document}

\begin{center}
    \begin{tikzpicture}
    \draw[cyan,fill=cyan] (0,0) rectangle (4,4/3);
    \begin{scope} % to limit effect of \clip
    % if any circles end up partly outside frame, cut off that part
    \clip (0,0) rectangle (4,4/3);

    \foreach \point in {1,...,\numpoints}{
        \pgfmathsetmacro\xpos{\width*random}
        \pgfmathsetmacro\ypos{\height*random}

        \node[circle,inner sep=0pt,minimum size=\pointwidth,fill=yellow] (point-\point) at (\xpos,\ypos) {};
        }
    \end{scope}

    \draw(0,0) rectangle (4,4);
    \end{tikzpicture}
\end{center}

\end{document}

相关内容