código

código

El siguiente código muestra la gráfica de la ecuación polar r(\theta) = 4 - 2*sin(\theta). Tengo la región delimitada por esta curva sombreada. Quiero que solo se sombreen la región delimitada por esta curva y el círculo centrado en 0 con radio 3.

El radio del eje polar es 7. No especifiqué esto. ¿El valor predeterminado es uno más que el radio máximo del gráfico? ¿Cómo consigo que el radio del eje polar sea 8?

No especifiqué las dimensiones de la trama. Es más grande de lo que quiero. ¿Cómo consigo que sea dos tercios del tamaño de visualización actual? ¿Se pueden especificar las dimensiones especificando el número de centímetros o pulgadas para el alto y el ancho?

¿Por qué hay un pequeño arco negro, tal vez entre -5 grados y 5 grados, dibujado en un radio de poco más de 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}

Respuesta1

Hay tantas preguntas menores. Dígame si alguna parte de esta respuesta no está clara.

Quiero que solo se sombreen la región delimitada por esta curva y el círculo centrado en 0 con radio 3.

Vea el código al final. Básicamente, puedes \cliptrazar una nueva función.min(4-2*sin(\x),3)

¿El valor predeterminado es uno más que el radio máximo del gráfico?

Nadie lo sabe realmente. La determinación del límite del eje es un misterio de larga data de pgfplots.

¿Cómo consigo que el radio del eje polar sea 8?

Respondido por @Bobyandbob en el comentario. (Esta es quizás la forma menos patética de controlar el límite del eje).

¿Se pueden especificar las dimensiones especificando el número de centímetros o pulgadas para el alto y el ancho?

Usa \begin{polaraxis}[width=5cm]o el valor que quieras.

¿Por qué hay un pequeño arco negro, tal vez entre -5 grados y 5 grados, dibujado en un radio de poco más de 4?

Porque \addplot[black] {4.05};en tu MWE. Recuerde que el valor predeterminado domainestá -4:4en TikZ.

¿Cómo puedo dibujar el eje x y el eje y?

Estrictamente hablando, polaraxissolo hay eje r y eje θ. Para dibujar el eje x habitual, utilice \draw[->]. (Consulte el código a continuación). Las etiquetas en el eje x se pueden dibujar con algo como\draw foreach\x in{-10,...,10}{(0,\x)node[lower right]{x}};

Quería dos círculos concéntricos de radios 8 y 8,05 para indicar la extensión del "plano polar" mostrado. El círculo con un radio de 8 se dibuja con x menor tick num=2. ¿Cómo puedo dibujar un círculo con un radio de 8,05 u 8,1 con el mismo tono de gris?

Esto lo puede hacer TikdoubleLas Z. Puedes controlarlo mediante line widthy double distance. (Consulte el código a continuación).

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}

Respuesta2

Mientras espera pgfplotsayuda, aquí tiene una alternativa que utilizaMetapostenvuelto enluamplib. Tienes que dibujarlo todo tú mismo, pero puedes lograr que luzca exactamente como quieres. ingrese la descripción de la imagen aquí

\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

  • Con luamplibpuede acceder a variables de LaTeX, como \textwidthusar la función, que fue tomada prestada del paquete \mpdimde @egreg .gmp

  • Puse el gráfico dentro de una pantalla matemática \[ ... \]simplemente para centrarlo en la página con una buena cantidad de saltos antes y después. Los puristas tal vez prefieran utilizar un centerentorno.

  • Verás que lo he utilizado buildcyclepara definir el commonárea a rellenar. Esta es una macro de propósito bastante general para definir rutas como esta, pero cuando la usas con dos rutas cerradas debes asegurarte de que el punto inicial de cada ruta no esté dentro del otro. Por eso he rotado el circlecamino 90.

información relacionada