código

código

O código a seguir exibe o gráfico da equação polar r(\theta) = 4 - 2*sin(\theta). Tenho a região delimitada por esta curva sombreada. Quero que apenas a região delimitada por esta curva e o círculo centrado em 0 com raio 3 sejam sombreados.

O raio do eixo polar é 7. Não especifiquei isso. O valor padrão é um a mais que o raio máximo do gráfico? Como faço para que o raio do eixo polar seja 8?

Não especifiquei as dimensões do terreno. É maior do que eu quero. Como faço para que tenha dois terços do tamanho de exibição atual? As dimensões podem ser especificadas especificando o número de centímetros ou polegadas para a altura e largura?

Por que existe um pequeno arco preto - talvez entre -5 graus e 5 graus desenhado em um raio ligeiramente superior a 4?

    \documentclass{amsart}
    \usepackage{amsmath}

    \usepackage{tikz}

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


    \begin{document}


    \begin{tikzpicture}
    \begin{polaraxis}[
        clip=false, major grid style={black}, minor x tick num=3, % 3 minor x ticks between majors
        minor y tick num=2, % 2 minor y ticks between majors
        grid=both,
        xtick={0,45,...,315},
        xticklabels={, $\frac{\pi}{4}$, , $\frac{3\pi}{4}$, , $\frac{5\pi}{4}$, , $\frac{7\pi}{4}$},
        ytick={0,3,6},
        yticklabels={\empty}
    ]
      \addplot[samples=360, mark=none, fill=red!70!black, opacity=0.5, domain=0:360] {4 - 2*sin(\x)};
      \addplot[samples=360, mark=none, thick, red!70!black, domain=0:360] {4 - 2*sin(\x)};

\addplot[samples=360, draw=red, thick, mark=none, domain=0:360] {3};

      \addplot[black] {4.05};
    \end{polaraxis}

    \end{tikzpicture}

    \end{document}

Responder1

Existem tantas questões menores. Diga-me se alguma parte desta resposta não estiver clara.

Quero que apenas a região delimitada por esta curva e o círculo centrado em 0 com raio 3 sejam sombreados.

Veja o código no final. Essencialmente, você pode \cliptraçar uma nova funçãomin(4-2*sin(\x),3)

O valor padrão é um a mais que o raio máximo do gráfico?

Ninguém realmente sabe. A determinação do limite do eixo é um mistério antigo dos pgfplots.

Como faço para que o raio do eixo polar seja 8?

Respondido por @Bobyandbob no comentário. (Esta é talvez a maneira menos patética de controlar o limite do eixo.)

As dimensões podem ser especificadas especificando o número de centímetros ou polegadas para a altura e largura?

Use \begin{polaraxis}[width=5cm]ou qualquer valor que desejar.

Por que existe um pequeno arco preto - talvez entre -5 graus e 5 graus desenhado em um raio ligeiramente superior a 4?

Porque \addplot[black] {4.05};no seu MWE. Lembre-se de que o padrão domainestá -4:4em TikZ.

Como posso desenhar o eixo x e o eixo y?

Estritamente falando, polaraxisexistem apenas o eixo r e o eixo θ. Para desenhar o eixo x normal, use \draw[->]. (Veja o código abaixo.) Os rótulos no eixo x podem ser desenhados por algo como\draw foreach\x in{-10,...,10}{(0,\x)node[lower right]{x}};

Eu queria dois círculos concêntricos de raios 8 e 8,05 para indicar a extensão do "plano polar" exibido. O círculo com raio de 8 é desenhado com menor x tick num=2. Como faço para desenhar um círculo com raio 8,05 ou 8,1 com o mesmo tom de cinza?

Isso pode ser feito por Tikdoublede Z. Você pode controlá-lo por line widthe double distance. (Veja o código abaixo.)

código

\documentclass{article}

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

\begin{document}
    \begin{tikzpicture}
        \begin{polaraxis}[
            width=5cm,
            clip=false,
            x axis line style={double=lightgray,double distance=1pt},
            grid=both,
            major grid style=black,
            minor x tick num=3, % 3 minor x ticks between majors
            minor y tick num=2, % 2 minor y ticks between majors
            xtick={0,45,...,315},
            xticklabels={,$\frac{\pi}4$,,$\frac{3\pi}4$,,$\frac{5\pi}4$,,$\frac{7\pi}4$},
            %y tick style={draw=none},
            yticklabel=\empty,
            domain=0:360,
            samples=360,
            mark=none
        ]
            \addplot[draw=red,thick]{3};
            \addplot[thick,fill=none,draw=red!70!black]{4-2*sin(\x)};
            \addplot[thick,fill=red!70!black,draw=none,opacity=0.5]{min(4-2*sin(\x),3)};
            \draw[->](0,-10)--(0,10);
            \draw[->](90,-10)--(90,10);
        \end{polaraxis}
    \end{tikzpicture}
\end{document}

Responder2

Enquanto você espera por algum pgfplotssuporte, aqui está uma alternativa usandoMetapostembrulhado emluamplib. Você tem que desenhar tudo sozinho, mas pode fazer com que fique exatamente como deseja. insira a descrição da imagem aqui

\documentclass{amsart}
\usepackage{luamplib}
\mplibtextextlabel{enable}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\[
\begin{mplibcode}
beginfig(1);
    % set a unit so that 16u is 2/3 of the text width
    numeric u;
    16u = 2/3 \mpdim\textwidth;

    % define some paths
    path curve, circle, common; 
    curve = (for t=0 upto 359: (4-2*sind(t)) * dir t -- endfor cycle) scaled u;
    circle = fullcircle rotated 90 scaled 6u;
    common = buildcycle(curve, circle);

    % fill the common area first
    fill common withcolor 7/8[3/4 red,white];

    % now make the grey parts of the polar grid
    drawoptions(withpen pencircle scaled 1/4 withcolor 3/4 white);
    for t=0 step 45/4 until 359:
        draw ((4,0) -- (8u,0)) rotated t;
    endfor
    for r=1 upto 7:
        draw fullcircle scaled (2r*u);
    endfor

    % and the black parts of the polar grid
    drawoptions(withpen pencircle scaled 1/4);
    for t=0 step 45 until 179:
        draw (left--right) scaled 8.2u rotated t;
    endfor
    % including a double circle on the outside
    draw fullcircle scaled 16u;
    draw fullcircle scaled (16u+2);
    % grid labels
    drawoptions();
    label("$\frac{ \pi}4$", (9u,0) rotated 45);
    label("$\frac{3\pi}4$", (9u,0) rotated (3*45));
    label("$\frac{5\pi}4$", (9u,0) rotated (5*45));
    label("$\frac{7\pi}4$", (9u,0) rotated (7*45));

    % finally draw the curve and the marker circle
    draw curve withcolor 2/3 red;
    draw circle withcolor 2/3 blue;

endfig;
\end{mplibcode}
\]
\lipsum[2]
\end{document}

Notas

  • Com luamplibvocê pode acessar variáveis ​​​​LaTeX, como \textwidthusar o \mpdimrecurso, que foi emprestado do pacote @egreg gmp.

  • Coloquei o gráfico dentro de uma exibição matemática \[ ... \]simplesmente para centralizá-lo na página com uma boa quantidade de saltos antes e depois. Os puristas podem preferir usar um centerambiente.

  • Você verá que usei buildcyclepara definir a commonárea a ser preenchida. Esta é uma macro de uso bastante geral para definir caminhos como este, mas quando você a utiliza com dois caminhos fechados, você deve garantir que o ponto inicial de cada caminho não esteja dentro do outro. É por isso que girei o circlecaminho em 90.

informação relacionada