How to draw a curve from a previously calculated list of points

If I understand what is required, then (somewhat surprisingly) \draw plot [...] (P-\x); works, provided you set the domain and samples key correctly. Then options like smooth can be used.

\documentclass[tikz,borde=5]{standalone}
\begin{document}
\begin{tikzpicture}[scale=0.2]
\def\R{5}
\foreach \i [evaluate={\a=18*\i; \r=\R+\i;}] in {0, 1,...,20}
  \fill (\a:\r) coordinate (P-\i) circle [radius=0.2]
    node [anchor=\a+180, font=\tiny] {$P_{\i}$};
\draw[blue] plot [domain=0:20, samples=21,smooth] (P-\x);
\end{tikzpicture}
\end{document} 

Alternatively, the coordinates can be stored in a macro (this has the advantage any coordinate format could then be used):

\documentclass[tikz,borde=5]{standalone}
\begin{document}
\begin{tikzpicture}[scale=0.2]
\def\R{5}
\foreach \i [evaluate={\a=18*\i; \r=\R+\i;}] in {0, 1,...,20}
  \fill (\a:\r) coordinate (P-\i) circle [radius=0.2]
    node [anchor=\a+180, font=\tiny] {$P_{\i}$}; 
\def\coords{}
\foreach \i in {0,...,20}{\xdef\coords{\coords(P-\i)}}
\draw[blue] plot [smooth] coordinates \coords;
\end{tikzpicture}
\end{document} 

Both methods produce the same result:

enter image description here


You could define your list as expanded macro, for example by using:

\def\LL{}
\foreach \ii in {1,2,3,...,20}{
  \xdef\LL{\LL (P-\ii)}
}

and then it works

\documentclass[tikz,border=7pt]{standalone}

\begin{document}
  \begin{tikzpicture}[scale=0.2]
    \def\RR{5}
    %calcul des coordonnées des points
    %calculation of the coordinates of the points
    \foreach \ii in {0, 1,2,3,...,20}{
        \pgfmathsetmacro{\aa}{360 * \ii/20}
        \pgfmathsetmacro{\rr}{\RR + \ii}
        \coordinate(P-\ii) at (\aa:\rr);
    }
    %dessin des points de la spirale/drawing spiral points
    \foreach \ii in {1,2,3,...,20}{
      \node[fill=black,inner sep=0,minimum size=0.2cm,circle]at (P-\ii){};
    }
    %Création de la liste point/ Creating the point list
    \def\LL{}
    \foreach \ii in {1,2,3,...,20}{
      \xdef\LL{\LL (P-\ii)}
    }
    %affichage de la liste / list view
    \node{\LL};
    % La commande ci-dessous fonctionne.
    % The command below works.
    \draw[blue] plot coordinates { \LL};
  \end{tikzpicture}
\end{document}

enter image description here


You can use another \foreach loop to draw the curve.

\documentclass[11pt]{standalone}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}[scale=0.2]
    \def\RR{5}
    %calcul des coordonnées des points
    %calculation of the coordinates of the points
    \foreach \ii in {0, 1,2,3,...,20}{
        \pgfmathsetmacro{\aa}{360 * \ii/20}
        \pgfmathsetmacro{\rr}{\RR + \ii}
        \coordinate(P-\ii) at (\aa:\rr);
    }

    %dessin de la spirale/drawing of the spiral
    \foreach \ii in {1,2,3,...,20}{
    \node[fill=black,inner sep=0,minimum size=0.2cm,circle]at (P-\ii){};
    }

    %par contre, en recopiant les données affichées on peut tracer la spirale
    % on the other hand, by copying the displayed data we can draw the spiral
    \foreach \ii in {1,2,...,19}{
        \draw[blue] (P-\ii) -- (P-\the\numexpr\ii+1\relax);
    }
\end{tikzpicture}

\end{document}

Result:

enter image description here