
Ich habe zwei Fragen zum folgenden Code:
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.
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 \coordinate
sdraußendie axis
Umgebung und Sie haben sich daher auf das TikZ-Koordinatensystem anstelle des axis
einen bezogen. Aber selbst wenn Sie sie platziert hätteninnenIn der axis
Umgebung 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 axis
Optionen in eine "falsche" Reihenfolge gebracht. Dein x label style
Versuch hat nicht funktioniert, weil du danach den Stil geladen hast axis lines=middle
, der selbst eine Anweisung hat x label style
und 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}
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}
Sie können eine Option hinzufügen, scale=...
wenn Sie sehen, dass die Zahl zu groß ist (glaube ich).