Ich verwende TikZ und pgfplots zum ersten Mal. (Ich verwende es, damit ich den Schülern in einem von mir unterrichteten Analysiskurs Unterrichtsnotizen schicken kann.) Ich habe ein Diagramm mit einer schrägen Asymptote. Bevor ich pgfplots für das Diagramm verwenden kann, muss ich nur einige Anpassungen an den Linien im Diagramm vornehmen!
Ich habe in einem anderen Beitrag gesehen, dass shorten <=2ex, shorten >=2ex
eine Linie an jedem Ende um 2ex gekürzt wird. Dieser Befehl verkürzt die vertikale Linie, aber nicht die schräge Linie. Ich möchte Pfeilspitzen auf beiden Linien; sie befinden sich auf der vertikalen Linie, aber nicht auf der schrägen Linie. Ich möchte, dass die Linien in derselben Richtung wie die Linien beschriftet sind ... aber außerhalb der Linie. Also muss ich eine Beschriftung nach oben und eine Beschriftung nach rechts verschieben. Da arctan(3/2) = 56,31 Grad ist, habe ich rotate=56.31
die Optionen für den Knoten verwendet. Gibt es einen „Schräg“-Befehl, um solche Beschriftungen in derselben Richtung wie die Linie zu zeichnen? Noch etwas. Die Beschriftung „y“ für die y-Achse ist zu nahe an der vertikalen Linie x=3/2. Wie passe ich ihre Position an? (Mir gefällt auch die Position des „x“ für die x-Achse nicht.)
\documentclass{amsart}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}
\begin{document}
\begin{tikzpicture}
\begin{axis}[width=4in,axis equal image,
axis lines=middle,
xmin=-15,xmax=15,
xlabel=$x$,ylabel=$y$,
ymin=-10,ymax=10,
restrict y to domain=-12:12,
enlargelimits={abs=1cm},
axis line style={latex-latex},
ticklabel style={font=\tiny,fill=white},
xtick={\empty},ytick={\empty},
]
\draw[dashed,latex-latex,shorten <=2ex, shorten >=2ex] (-13,-17) -- (13,22) node[right,rotate=56.31,pos=0.1]{$\scriptstyle{y=(3/2)x+5/2}$};
\draw[dashed,latex-latex,shorten <=2ex, shorten >=2ex] ({1.5,0} |- {{axis description cs:1,1}}) -- ({{1.5,0}} |- {{axis description cs:1,-1}}) node[right,rotate=90,pos=0.5]{$\scriptstyle{x=3/2}$};
\end{axis}
\end{tikzpicture}
\end{document}
Antwort1
Der Grund, warum die shorten
Befehle nicht zuverlässig zu funktionieren scheinen, liegt darin, dass Sie die Enden Ihrer Linien nicht sehen können: Sie liegen außerhalb des Plotbereichs und sind abgeschnitten. Um die vollständigen Linien zu sehen, fügen Sie clip=false
Ihren axis
Optionen etwas hinzu.
Ich würde das anders angehen: Statt \draw
Befehle zu verwenden, kann man mit dem Befehl „echte“ Plots verwenden \addplot
. So kann man die Gleichungen direkt angeben, statt vorher den Winkel für die Drehung berechnen zu müssen.
\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}
\begin{document}
\begin{tikzpicture}
\begin{axis}[width=4in,axis equal image,
clip=false,
axis lines=middle,
xmin=-15,xmax=15,
domain=-15:15, samples=50,
xlabel=$x$,ylabel=$y$,
ymin=-10,ymax=10,
restrict y to domain=-12:12,
enlargelimits={abs=1cm},
axis line style={latex-latex},
ticklabel style={font=\tiny,fill=white},
xtick={\empty},ytick={\empty},
]
\addplot [dashed, latex-latex] {(3/2)*x+5/2} node [pos=0.25, anchor=south, font=\footnotesize, sloped] {$y=(3/2)x+5/2$};
\addplot [dashed, latex-latex] (1.5,x) node [pos=0.25, anchor=north, font=\footnotesize, sloped] {$x=3/2$};
\end{axis}
\end{tikzpicture}
\end{document}
Antwort2
sloped
Sie können anstelle der Winkelberechnung auch die folgende Option verwenden :
Anmerkungen:
- Außerdem habe ich die Lamellenbrüche durch ein ersetzt,
\frac
da ich finde, dass das viel besser aussieht. - Um die Achsenbeschriftungen an den Spitzen zu erhalten, können Sie den
Axis Labels At Tip
Stil verwenden, den ich extrahiert habe ausSo skalieren Sie ein TikZ/PGF-Bild mit einer `\begin{axis}...\end{axis}` richtig. - Der Grund, warum es an beiden Enden keine Pfeilspitzen gab, wird deutlich, wenn Sie einstellen
clip=false
. Die Linien lagen weit außerhalb des angezeigten Bereichs. Sie können also entweder die Koordinaten bearbeiten, um die Endpunkte der Linien in den Bereich zu bringen, oder einfach den Betrag erhöhen, um den Sie die Linie verkürzen. Im MWE unten habe ich dieshorten
Beträge erhöht, da dies einfacher war, als geeignete Koordinaten zu berechnen, um dieselbe Neigung und Position beizubehalten.
Code:
\documentclass{amsart}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}
%% https://tex.stackexchange.com/questions/17438/how-to-properly-scale-a-tikz-pgf-picture-which-has-a-beginaxis-endaxis
%%
\pgfkeys{/pgfplots/Axis Labels At Tip/.style={
xlabel style={
at={(current axis.right of origin)},
xshift=1.5ex, anchor=center
},
ylabel style={
at={(current axis.above origin)},
yshift=1.5ex, anchor=center
}
}
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[width=4in,axis equal image,
axis lines=middle,
xmin=-15,xmax=15,
xlabel=$x$,ylabel=$y$,
ymin=-10,ymax=10,
restrict y to domain=-12:12,
enlargelimits={abs=1cm},
axis line style={latex-latex},
ticklabel style={font=\tiny,fill=white},
% xtick={\empty},ytick={\empty},
Axis Labels At Tip,
%clip=false
]
\draw[dashed,latex-latex,shorten <=4ex, shorten >=15ex] (axis cs: -13,-17) -- (axis cs: 13,22) node[right,sloped, above,pos=0.15]{$y=\frac{3}{2}x+ \frac{5}{2} $};
\draw[dashed,latex-latex,shorten <=2ex, shorten >=2ex] ({1.5,0} |- {{axis description cs:1,1}}) -- ({{1.5,0}} |- {{axis description cs:1,0}}) node[right,rotate=90, below, pos=0.65]{$x= \frac{3}{2}$};
\end{axis}
\end{tikzpicture}
\end{document}