有点难以弄清楚 tikz/pgf 在这里想要我做什么。我尝试了以前提问者提供的一些解决方案,但似乎仍然无济于事。当我使用时\addplot fill between [of=A and B];
,我的极轴完全消失,无论颜色和不透明度等其他设置如何,都不会出现阴影。以下是一个例子:
\begin{tikzpicture}
\begin{polaraxis}[axis on top,
xticklabels={,0,$\frac\pi6$,$\frac\pi3$,$\frac\pi2$,$\frac{2\pi}3$,$\frac{5\pi}6$,$\pi$,$\frac{7\pi}6$,$\frac{4\pi}3$,$\frac{3\pi}2$,$\frac{5\pi}3$,$\frac{11\pi}6$}
]
\addplot+[name path = A, mark=none,domain=0:720,samples=600, black]
{3*sin(3 * x)};
\addplot+[name path = B, mark=none,domain=0:720,samples=600, black]
{3*cos(3 * x)};]
% \tikzfillbetween[of=A and B]{gray, opacity=0.5}
% equivalent to (x,{sin(..)cos(..)}), i.e.
% the expression is the RADIUS
\addplot fill between [of=A and B];
\end{polaraxis}
\end{tikzpicture}
另一个提问者用 找到了解决方案\tikzfillbetween[of=A and B]{gray, opacity=0.5}
,但它似乎无法完成填充两条路径交点的工作,至少在极轴的上下文中是如此(在直角轴中,在 之间 填充效果很好!)。它在填充并集方面做得很好,但我正在寻找交点。
作为参考,这里有fill between
同一篇论文其他地方的一个例子。
我完全理解,如果 pgf 的当前版本无法实现这一点,但如果能确切知道就更好了。非常感谢!
答案1
这是一种更原始但有效的方法来填充两条曲线的交点。
\documentclass[tikz,border=3mm]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{polar}
%\usepgfplotslibrary{fillbetween}
\pgfplotsset{compat=1.17}
\makeatletter
\tikzset{reuse path/.code={\pgfsyssoftpath@setcurrentpath{#1}}}
\makeatother
\begin{document}
\begin{tikzpicture}
\begin{polaraxis}[axis on top,
xticklabels={,0,$\frac\pi6$,$\frac\pi3$,$\frac\pi2$,$\frac{2\pi}3$,$\frac{5\pi}6$,$\pi$,$\frac{7\pi}6$,$\frac{4\pi}3$,$\frac{3\pi}2$,$\frac{5\pi}3$,$\frac{11\pi}6$}
]
\addplot[save path=\pathA, mark=none,domain=0:720,samples=600, black]
{3*sin(3 * x)};
\addplot[save path=\pathB, mark=none,domain=0:720,samples=600, black]
{3*cos(3 * x)};
\clip[reuse path=\pathA];
\fill[gray,opacity=0.5,reuse path=\pathB];
\end{polaraxis}
\end{tikzpicture}
\end{document}