Linien und Achsenbeschriftungen in pgfplots

Linien und Achsenbeschriftungen in pgfplots

Ich habe zwei Fragen zum folgenden Code:

  1. Wie kann ich die gestrichelten Linien an die richtige Stelle setzen (also von (0, 2) über (3, 2) nach (3, 0))? Im Moment stehen sie an der falschen Stelle.

  2. Wie kann ich dieXUndjSollen die Achsenbeschriftungen jeweils unterhalb und links von den Achsen liegen?

\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}

Antwort1

Zu 1.:
Hier platziert man das \coordinatesdraußendie axisUmgebung und Sie haben sich daher auf das TikZ-Koordinatensystem anstelle des axiseinen bezogen. Aber selbst wenn Sie sie platziert hätteninnenIn der axisUmgebung hätte dies zum gleichen Ergebnis geführt. Warum und wie dies verhindert/überwunden werden kann, wird in den Kommentaren im Code erklärt.

Zu 2.:
Hier hast du die axisOptionen in eine "falsche" Reihenfolge gebracht. Dein x label styleVersuch hat nicht funktioniert, weil du danach den Stil geladen hast axis lines=middle, der selbst eine Anweisung hat x label styleund damit deine "überstimmt". Durch Umstellen der Reihenfolge der Tasten funktioniert es. Es gibt aber eine bessere Lösung als deine, die du auch im folgenden Code finden kannst.

Außerdem habe ich noch einige andere Verbesserungen an Ihrem Code vorgenommen ...

% 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}

Bild, das das Ergebnis des obigen Codes zeigt

Antwort2

Eine Lösung mitreinTikZ, und der Code scheintvielkürzer:

\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}

Bildbeschreibung hier eingeben

Sie können eine Option hinzufügen, scale=...wenn Sie sehen, dass die Zahl zu groß ist (glaube ich).

verwandte Informationen