为极坐标曲线的花瓣着色

为极坐标曲线的花瓣着色

在此处输入图片描述

请问,我该如何为下列极坐标曲线的五个花瓣分别涂上不同的颜色?


\usepackage{pgfplots}
\usepgfplotslibrary{polar}
\pgfplotsset{compat=newest}

\begin{document}

 \begin{tikzpicture}
   \begin{polaraxis}
     \addplot[mark=none,domain=0:360,samples=300] {cos(5*x)};
   \end{polaraxis}
 \end{tikzpicture}

\end{document}

答案1

另一种选择是元帖子

在此处输入图片描述

这个想法与@mickep的答案基本相同。制作完整的玫瑰曲线,然后选择域的合适子路径以获得花瓣。

\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
beginfig(1);
input colorbrewer-rgb
numeric n; n = 5;  % n should be odd
path rose, petal; 
rose = (for t=0 upto 179: cosd (n * t) * dir t .. endfor cycle) scaled 100;
petal = subpath (-90/n, 90/n) of rose .. cycle;
for i=1 upto n:
    fill petal rotated (360 / n * i) withcolor Spectral[n][i];
endfor
draw rose;
endfig;
\end{mplibcode}
\end{document}

用 编译lualatex

答案2

你可以玩玩这些域名。我为你准备了两个:

\documentclass{article}

\usepackage{pgfplots}
\usepgfplotslibrary{polar}
\pgfplotsset{compat=newest}

\begin{document}

 \begin{tikzpicture}
   \begin{polaraxis}
     \addplot[mark=none,blue,domain=-18:18,samples=300] {cos(5*x)};
     \addplot[mark=none,red,domain=18:54,samples=300] {cos(5*x)};
   \end{polaraxis}
 \end{tikzpicture}

\end{document}

在此处输入图片描述

答案3

这是我使用普通 Asymptote 的尝试。有polargraph命令,但Asymptotepolaraxis模块中没有命令(另请参阅graph此链接这个答案),所以我直接画出极轴。

在此处输入图片描述

// http://asymptote.ualberta.ca/
import graph;
size(8cm);
path c1=circle((0,0),1);
path c2=circle((0,0),.5);
path c=circle((0,0),1.2);
draw(c1^^c2,gray);
draw(c);
for(int i=0; i<12; ++i){
draw((0,0)--1.3dir(30i),lightgray);
label(string(30i),1.45dir(30i));
}
label("O",(0,0),3W);
label("$1$",(1,0),SE);

pen[] d={red,orange,yellow,blue,green};
real f(real t){return cos(5t);}
for(int i=0; i<5; ++i){
path g=polargraph(f,(2i-1)*pi/10,(2i+1)*pi/10,operator..)--cycle;
filldraw(g,d[i]+opacity(.5));  
}

如果您想稍微旋转花瓣,只需rotate(30)在路径前使用应用。

filldraw(rotate(30)*g,d[i]+opacity(.5));

在此处输入图片描述

相关内容