Linhas e rótulos de eixo em pgfplots

Linhas e rótulos de eixo em pgfplots

Tenho duas dúvidas sobre o código abaixo:

  1. Como posso colocar as linhas tracejadas no lugar certo (ou seja, de (0, 2) a (3, 2) a (3, 0))? No momento eles estão no lugar errado.

  2. Como posso mover oxesimos rótulos dos eixos fiquem abaixo e à esquerda dos eixos, respectivamente?

\documentclass{article}
\usepackage{amsmath,tikz,graphicx,pgfplots,xcolor,float}

\begin{document}
\pgfplotsset{
standard/.style={
    every axis x label/.style={at={(current axis.right of origin)},anchor=north west},
    every axis y label/.style={at={(current axis.above origin)},anchor=north east}
 }
}
 \begin{figure}
\begin{tikzpicture}
    \pgfmathsetmacro{\n}{sqrt(13)}
    \begin{axis}[axis equal,
                 xlabel=$x$,
    x label style = {below=5mm},
                 ylabel=$y$,
                 axis lines=middle,
                 xmin=-3,xmax=8,
                 xtick={3},
                 ymin=-3,ymax=8,
                 ytick={2},]
    \addplot[very thick, red!50, domain=0:360, samples=100, variable=\t] ({3+\n*cos(t)},{2+\n*sin(t)});
    \end{axis}
\coordinate (A) at (0,2);
\coordinate (B) at (3,2);
\coordinate (C) at (3,0);
    \draw[dashed] (A)--(B)--(C);
\end{tikzpicture}
\end{figure}
\end{document}

Responder1

Para 1.:
Aqui você colocou o \coordinatesforao axisambiente e, portanto, você se referiu ao sistema de coordenadas TikZ em vez daquele axis. Mas mesmo se você os tivesse colocadodentroambiente axis, isso teria levado ao mesmo resultado. Por que e como isso pode ser evitado/superado é explicado nos comentários do código.

Para 2.:
Aqui você colocou as axisopções na ordem "errada". Sua x label styletentativa não funcionou, porque depois disso você carregou o estilo axis lines=middleque contém uma x label styledeclaração e, portanto, "anula" o seu. Mudar a ordem das teclas faz com que funcione. Mas existe uma solução melhor que a sua, que também pode ser encontrada no código a seguir.

Além disso fiz algumas outras melhorias no seu código...

% used PGFPlots v1.16
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
    % use this `compat` level or higher to make `axis cs:` the default
    % coordinate system for TikZ coordinates
    \pgfplotsset{compat=1.11}
\begin{document}
\begin{tikzpicture}
    \begin{axis}[
        % (this has to be written near the beginning, thus other styles are
        % not overwritten again)
        axis lines=middle,
        axis equal,
        xmin=-3,
        xmax=8,
        xtick={3},
        ymin=-3,
        ymax=8,
        ytick={2},
        xlabel=$x$,
        ylabel=$y$,
%        % (this didn't work because it was overwritten by `axis lines`,
%        %  which originally was below this statement)
%        x label style={below=5mm},
        xlabel style={
            anchor=north east,
        },
        ylabel style={
            anchor=north east,
        },
    ]
            \pgfmathsetmacro{\n}{sqrt(13)}
        \addplot [
            very thick,
            red!50,
            domain=0:360,
            % (by using smooth the default `samples=25` is perfectly fine)
            smooth,
        ] (
            {3+\n*cos(x)},
            {2+\n*sin(x)}
        );

        % when `compat` level is 1.11 or higher, TikZ coordinates don't have
        % to be prepended by `axis cs:` (any more) because then this is the
        % default coordinate system
        \draw [dashed] (0,2) -| (3,0);
%        % ... thus, otherwise you have to write
%        \draw [dashed] (axis cs:0,2) -| (axis cs:3,0);
    \end{axis}
\end{tikzpicture}
\end{document}

imagem mostrando o resultado do código acima

Responder2

Uma solução usandopuroTikZ, e o código parece sermuitomais curta:

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\draw[-stealth] (0,-3)--(0,8) node[left] {$y$};
\draw[-stealth] (-3,0)--(8,0) node[below] {$x$};
\draw[dashed] (0,2) node[left] {2}--(3,2)--(3,0) node[below] {3};
\draw[red!50,very thick] plot[smooth,variable=\t,samples=100,domain=0:360] ({3+sqrt(13)*cos(\t)},{2+sqrt(13)*sin(\t)});
\end{tikzpicture}
\end{document}

insira a descrição da imagem aqui

Você pode adicionar uma opção scale=...se perceber que a figura é muito grande (acho que sim).

informação relacionada