
Ich versuche, eine einfache Kurve zu zeichnen, die aus zwei parabolischen Pfaden besteht, einer horizontal und einer vertikal. Bisher habe ich mich darauf festgelegt, zu verwenden parabola
, aber ich kann davon abgebracht werden. Unten ist mein aktueller Code:
\documentclass[12pt, tikz, border=0mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{calc,intersections,through}
\tikzset{every label/.style = {label distance=2pt, inner sep=0pt}}
\tikzset{every node/.style={font=\footnotesize}}
\tikzset{> = {Stealth[width=4pt, length=5pt, inset=1pt]}}
\begin{document}
\newlength{\unit}
\setlength{\unit}{0.5cm}
\begin{tikzpicture}[x=\unit, y=\unit, line width=2pt]
% Begin axes
\begin{scope}[line width=0.5pt]
\draw[->] (-3.5,0) -- (5.5,0);
\draw[->] (0,-0.5) -- (0,5.5);
\foreach \x in {-3, -2, -1, 1, 2, 3, 4, 5}
\draw (\x,2pt) -- (\x,-2pt) node [anchor=base, shift={(0,-8pt)}, inner sep=1pt] {$\x$};
\foreach \y in {1, ..., 5}
\draw (2pt,\y) -- (-2pt,\y) node [anchor=east, inner sep=1pt] {$\y$};
\end{scope}
% End axes
\draw [rotate around={-90:(3,5)}](3,5) parabola (5.5,-1);
\draw (3,5) parabola (5,0);
\end{tikzpicture}
\end{document}
Das Problem, das in der enthaltenen Ausgabe deutlich wird, ist, dass die beiden Pfade „getrennt“ aussehen. Gibt es eine Möglichkeit, sie wie einen durchgehenden Pfad aussehen zu lassen?
Antwort1
Zwei getrennte Linien können nicht verbunden werden. Sie müssen beide Parabeln in einem einzigen Pfad zeichnen. Versuchen Sie:
\documentclass[12pt, tikz, border=0mm]{standalone}
\usetikzlibrary{arrows.meta, % <-- only this is needed
calc, intersections, through}
\newlength{\unit}
\tikzset{every label/.style = {label distance=2pt, inner sep=0pt},
every node/.style={font=\footnotesize},
> = {Stealth[width=4pt, length=5pt, inset=1pt]}
}
\begin{document}
\setlength{\unit}{0.5cm}
\begin{tikzpicture}[x=\unit, y=\unit, line width=2pt]
% Begin axes
\begin{scope}[line width=0.5pt]
\draw[->] (-3.5,0) -- (5.5,0);
\draw[->] (0,-0.1) -- (0,5.5);
\foreach \x in {-3, -2,...,5}
\draw (\x,2pt) -- ++ (0,-4pt) node[below] {$\x$};
\foreach \y in {1,...,5}
\draw (2pt,\y) -- ++ (-4pt,0) node[left] {$\y$};
\end{scope}% End axes
% the first parabola start at (5,0) and end at (3,5)
% wherends start the second, rotated one
% for this the bend of the first parabola is moved to the end of path
\draw (5,0) parabola[bend at end] (3,5) {[rotate around={-90:(3,5)}] parabola (5.5,-1)} ;
\end{tikzpicture}
\end{document}
Antwort2
Zarkos Weg ist mit Sicherheit der richtige.Aber, manchmal kann das Vereinen der Pfade etwas knifflig sein ...
Dann gibt es eine knifflige Möglichkeit, die Pfadesehenvereint, obwohl es sich in Wirklichkeit um getrennte Pfade handelt. Dazu kann man line cap
den Schlüssel verwenden, der ursprünglich auf eingestellt ist butt
. Bei senkrechten Verbindungen kann verwendet werden line cap=rect
, wodurch die Pfade aussehen, als seien sie scharf verbunden, oder in allen Fällen, line cap=round
wodurch die Pfade aussehen, als seien sie rund verbunden.*
Da es sich hier um eine senkrechte Verbindung handelt, ist es möglich, zu verwenden rect
, aber ich habe dem MWE weitere Zeichnungen hinzugefügt, um zu zeigen, wie es line cap=round
immer funktioniert, aber rect
nicht immer. Außerdem gibt es in der oberen linken Ecke Beispiele für alle drei Linienenden, damit der Unterschied deutlich wird.
Das vollständige MWE:
\documentclass[12pt, tikz, border=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{calc,intersections,through}
\tikzset{every label/.style = {label distance=2pt, inner sep=0pt}}
\tikzset{every node/.style={font=\footnotesize}}
\tikzset{> = {Stealth[width=4pt, length=5pt, inset=1pt]}}
\begin{document}
\newlength{\unit}
\setlength{\unit}{0.5cm}
\begin{tikzpicture}[x=\unit, y=\unit, line width=2pt]
% Begin axes
\begin{scope}[line width=0.5pt]
\draw[->] (-3.5,0) -- (5.5,0);
\draw[->] (0,-0.5) -- (0,5.5);
\foreach \x in {-3, -2, -1, 1, 2, 3, 4, 5}
\draw (\x,2pt) -- (\x,-2pt) node [anchor=base, shift={(0,-8pt)}, inner sep=1pt] {$\x$};
\foreach \y in {1, ..., 5}
\draw (2pt,\y) -- (-2pt,\y) node [anchor=east, inner sep=1pt] {$\y$};
\end{scope}
% End axes
\draw[line cap=rect] [rotate around={-90:(3,5)}](3,5) parabola (5.5,-1);
\draw (3,5) parabola (5,0);
%%MWE ends here -- the rest is for demonstration purposes only
\draw (1,0) -- (1,1);\draw[line cap=round] (1,1) -- +(135:1);
\draw (2,0) -- (2,1);\draw[line cap=rect] (2,1) -- +(135:1);
\draw (-3,5) -- +(1,0);\draw[ultra thin, white] (-3,5) -- +(1,0) node[font={\tiny\ttfamily},right,black]{butt};
\draw[line cap=round] (-3,4.5) -- +(1,0); \draw[ultra thin, white] (-3,4.5) -- +(1,0) node[font={\tiny\ttfamily},right,black]{round};
\draw[line cap=rect] (-3,4) -- +(1,0);\draw[ultra thin, white] (-3,4) -- +(1,0) node[font={\tiny\ttfamily},right,black]{rect};
\end{tikzpicture}
\end{document}
*Das gilt natürlich nur für Linien gleicher Breite, wenn die Linien unterschiedliche Breiten haben, werden sie mit dieser Methode nicht richtig verbunden...