3

I need to make for loop analog in LaTeX. My code has following form

\documentclass[9pt]{article}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}

\begin{tikzpicture}[scale=1.2, font=\tiny] 
\begin{axis}[
    axis x line=middle,         
    axis y line=middle,         
    domain=-5:5,                
    restrict y to domain=-5:5,  
    xmin=-5,    xmax=5,         
    ymin=-5,    ymax=5,         
    x=0.5cm,                        
    y=0.5cm,                        
    grid=both,                  
    xtick={-5,...,5},           
    ytick={-5,...,5},           
    xlabel=$x$,
    ylabel=$y$,
    every axis x label/.style={
    at={(ticklabel* cs:1)},
    anchor=west,},
    every axis y label/.style={
    at={(ticklabel* cs:1)},
    anchor=south,},
]
\addplot[smooth,red,domain=0:2*pi,variable=\t] ({4*cos(180/pi*t)},{4*sin(180/pi*t)});
\addplot[smooth,orange,domain=0:4,variable=\r] ({r*cos(360/4)},{r*sin(360/4)});
\addplot[smooth,orange,domain=0:4,variable=\r] ({r*cos(2*360/4)},{r*sin(2*360/4)});
\addplot[smooth,orange,domain=0:4,variable=\r] ({r*cos(3*360/4)},{r*sin(3*360/4)});
\end{axis}
\end{tikzpicture}
\end{document}

Is it possible to write for loop to automatically make "n" lines?

musarithmia
  • 12,463
Giorgi
  • 1,069
  • 1
    Do you want an example of the syntax? Look here for a simple case: http://www.texample.net/tikz/examples/cycle/ That website also has more complicated cases... – darthbith Dec 19 '14 at 14:05
  • 1
    If you specify in your question how to make 1 line, then we can show you how to make "n" lines. If the lines are really all the same, then it's very simple. – musarithmia Dec 19 '14 at 14:10
  • texample.net/tikz/examples/cycle this example was very helpful. – Giorgi Dec 19 '14 at 14:39

1 Answers1

4

Use two nested \foreach loops. Since \k depends on \n you could probably reduce it to one loop. I'm not a mathematician but I think the TeX part is correct here.

\documentclass[9pt]{article}
\usepackage{tikz,pgfplots}

\newcommand{\nMAX}{20} 
\newcommand{\kMAX}{19}

\begin{document}
\begin{tikzpicture}[scale=1.2, font=\tiny] 
\begin{axis}[
    axis x line=middle,         
    axis y line=middle,         
    domain=-5:5,                
    restrict y to domain=-5:5,  
    xmin=-5,    xmax=5,         
    ymin=-5,    ymax=5,         
    x=0.5cm,                        
    y=0.5cm,                        
    grid=both,                  
    xtick={-5,...,5},           
    ytick={-5,...,5},           
    xlabel=$x$,
    ylabel=$y$,
    every axis x label/.style={
    at={(ticklabel* cs:1)},
    anchor=west,},
    every axis y label/.style={
    at={(ticklabel* cs:1)},
    anchor=south,},
]

\foreach \n in {1, ..., \nMAX} 
    \foreach \k in {0, ..., \kMAX} 
        {
            \addplot[smooth,orange,domain=0:4,variable=\r]
                ({r*cos(\k*360/\n)},{r*sin(\k*360/\n)});
        }

\end{axis}
\end{tikzpicture}
\end{document}

Is this what you were expecting?

enter image description here

musarithmia
  • 12,463