Schattierung zwischen Kurven mit Polaraxis

Nov 29 2020

Ich verwende pgfplotsund zeichne die Gleichungen r=1und r=1-sin(\x/2), aber ich möchte die 3 verschiedenen Bereiche, die durch die Kurven gebildet werden, schattieren. Ich habe einen Link zu diesem Fehlerbericht gefunden, der nach der Verwendung fill betweenin der polaraxisUmgebung fragt und auf zwei andere TeX.SX-Beiträge verweist:https://github.com/pgf-tikz/pgfplots/issues/124

Dieser Beitrag schattiert den Bereich, der den Ursprung enthält: Schattierung zwischen den Graphen zweier polarer Gleichungen in pgfplots

In diesem Beitrag wird die axisUmgebung anstelle der polaraxisUmgebung verwendet: Schattieren eines Bereichs zwischen zwei Polarkurven

Hier ist der Code, mit dem ich arbeite:

\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\usepgfplotslibrary{polar, fillbetween}
\pgfplotsset{compat=newest}

\begin{document}
  \begin{tikzpicture}[scale=1]
    \begin{polaraxis}
      [
      domain=0:360,
      samples=180,
      grid=both,
      grid style={line width=0.1pt, draw=gray!75},
      major grid style={black}, 
      minor x tick num=3,
      minor y tick num=3,
      xmin=0, xmax=360,
      ymin=0, ymax=2.25,
      xtick={0,45,...,360},
      xticklabels={},
      ytick={3},
      yticklabel style={anchor=north},
      ]
      \addplot[draw=red, domain=0:720] {1-sin(\x/2)};
      \addplot[draw=blue, domain=0:360] {1};
    \end{polaraxis}
  \end{tikzpicture}
\end{document}

Antworten

5 Noname Nov 29 2020 at 07:10

Hier ist eine Methode, die nicht sehr ausgefeilt ist, aber funktioniert.

\documentclass{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{polar, fillbetween}
\pgfplotsset{compat=newest}
\makeatletter
\tikzset{reuse path/.code={\pgfsyssoftpath@setcurrentpath{#1}}}
\makeatother

\begin{document}
  \begin{tikzpicture}[scale=1]
  \pgfplotsset{set layers}
    \begin{polaraxis}
      [axis on top,
      domain=0:360,
      samples=180,
      grid=both,
      grid style={line width=0.1pt, draw=gray!75},
      major grid style={black}, 
      minor x tick num=3,
      minor y tick num=3,
      xmin=0, xmax=360,
      ymin=0, ymax=2.25,
      xtick={0,45,...,360},
      xticklabels={},
      ytick={3},
      yticklabel style={anchor=north},
      ]
      \addplot[draw=red, domain=0:720,save path=\RedPath] {1-sin(\x/2)};
      \addplot[draw=blue, domain=0:360,save path=\BluePath] {1};
      \pgfonlayer{axis background}
       \fill[blue!20,reuse path=\BluePath];
       \fill[red!20,even odd rule,reuse path=\RedPath];
       \clip[reuse path=\BluePath];
       \fill[cyan!20,even odd rule,reuse path=\RedPath];
      \endpgfonlayer
    \end{polaraxis}
  \end{tikzpicture}
\end{document}