Ich generiere einen Polar-Diagramm von Chebyshev-Polynomen. Jedem Plot gebe ich einen Namen. Anschließend fülle ich in einer Schleife Zwischenräume von erzeugten Plots. Jedoch kann man sich nicht auf die Namen beziehen. In folgenden Beispiel kommt ein Fehler: Open in writeLaTeX
\documentclass{standalone} \usepackage{pgfplots} \usepgfplotslibrary{polar,fillbetween} \begin{document} \begin{tikzpicture} \begin{polaraxis}[hide axis] \pgfplotsinvokeforeach{0,...,20}{ \addplot[name path = #1, mark=none, solid, domain=0:360, samples=100] { #1*2 + cos(#1*2*acos(x/180-1))}; } \addplot[name path = -1] coordinates {(0,0)};% start for filling \foreach \i [evaluate=\i as \j using int(\i-1)] in {0,2,...,20}{ \addplot[black] fill between[of=\i and \j]; } \end{polaraxis} \end{tikzpicture} \end{document} Der Fehler lautet: Open in writeLaTeX
Runaway argument? \i and \j \pgf@stop \else \pgfkeys@case@two \fi \fi \fi \pgfkeys@parse \ETC. ! File ended while scanning use of \tikzlibraryfillbetween@parse. <inserted text> \par Wie schafft man es dennoch in einer Schleife? Anlass für die Frage war, dass ich mich dafür interessierte, den Plot von M. Trott aus dem Buch "Graphica 1" zu programmieren, den man auf Wolfram MathWorld findet. gefragt 18 Jul '14, 18:52 stefan ♦♦ |
Statt Jedoch haben wir zwei Optionen anzugeben, da zwischen zwei Plots gefüllt wird, also zwischen zwei benannten Pfaden. Dabei lässt sich der eine natürlich aus dem anderen ermitteln, da zwischen benachbarten Plots gefüllt wird. Also nehme ich Ein kleines Detail ist noch, dass hier ein Leerzeichen nach einer Makro-Expansion verschluckt wird, das ich daher mit Open in writeLaTeX
\documentclass{standalone} \usepackage{pgfplots} \usepgfplotslibrary{polar,fillbetween} \begin{document} \begin{tikzpicture} \begin{polaraxis}[hide axis] \pgfplotsinvokeforeach{0,...,20}{ \addplot[name path = #1, mark=none, solid, domain=0:360, samples=100] { #1*2 + cos(#1*2*acos(x/180-1))}; } \addplot[name path = -1] coordinates {(0,0)};% start for filling \foreach \i [evaluate=\i as \j using int(\i-1)] in {0,2,...,20} { \edef\temp{[black] fill between[of=\i\space and \j]} \expandafter\addplot\temp; } \end{polaraxis} \end{tikzpicture} \end{document} beantwortet 18 Jul '14, 19:00 stefan ♦♦ |
Die Frage ist zum Archivieren gedacht, kein Support benötigt. Ich werde meine Lösung hierzu posten fürs Archiv.