Wie kann ich eine relative Positionierung in Tikz erreichen

Wie kann ich eine relative Positionierung in Tikz erreichen

Mögliches Duplikat:
Relative Positionierung von Knoten in TikZ

Ich erstelle ein Baumdiagramm in Tikz und weiß, dass es sinnlos wäre, jeden einzelnen Punkt zu berechnen. Aus diesem Grund möchte ich die Dinge in relativer Position zueinander platzieren.

Hier sind zwei Fragen:

  1. Wie kann ich in diesem einfachen Beispiel den zweiten Knoten definieren?

    \begin{tikzpicture}  
    \node (a) at (0,0) {};  
    \node (b) at (2,1) {};  
    \end{tikzpicture}  
    
  2. Wie kann ich diesen Zeilenbefehl durch einen ersetzen, der eine relative Positionierung hat ( aund bwerden die oben erstellten)?

    \draw (a) -- (0,1);
    \draw (0,1) -- (b);
    

Bitte lassen Sie es mich wissen, wenn etwas unklar ist.

Antwort1

Wie in den Kommentaren bereits erwähnt, können Sie die positioningBibliothek verwenden. Hier ist ein einfaches Beispiel, das die verfügbaren Optionen veranschaulicht, wenn Sie beispielsweise Folgendes verwenden above left(dasselbe Diagramm wird zweimal wiederholt; beim zweiten Mal on gridwird die Option aktiviert):

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}

\begin{tikzpicture}  
\draw[help lines,step=5mm,gray!20] (0,0) grid (4,3);
\node (a) at (0,0) {a};  
\node[above right] (b) {b};
\node[above right = of a] (c) {c};
\node[above right = 2cm of a] (d) {d};
\node[above right = 2cm and 3cm of a] (e) {e};
\begin{scope}[xshift=5cm,on grid]
\draw[help lines,step=5mm,gray!20] (0,0) grid (4,3);
\node (a) at (0,0) {a};  
\node[above right] (b) {b};
\node[above right = of a] (c) {c};
\node[above right = 2cm of a] (d) {d};
\node[above right = 2cm and 3cm of a] (e) {e};
\end{scope}
\end{tikzpicture} 

\end{document}

Bildbeschreibung hier eingeben

Die Parameterwerte 2cmund 3cmkönnen relativ zum gewünschten Standort geändert werden, beispielsweise -2cmum -3cmden Standort im lokalen Koordinatensystem zu spiegeln, wo asich der Mittelpunkt von befindet.

\node[above right = 2cm and 3cm of a] 
\node[above right = -2cm and -3cm of a] 

Nun ein kleines Beispiel, das den node distanceSchlüssel und einige weitere Optionen zeigt above left:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}

\begin{tikzpicture} 
\draw[help lines,step=5mm,gray!20] (-4,-4) grid (4,3);
\node[draw] (a) at (0,0) {a};  
\foreach \pos in {above,above right,right,below right,below,below left,left,above left}
  \node[draw,\pos = of a] () {\pos};
\begin{scope}[yshift=8cm,node distance=2cm and 1cm]
\draw[help lines,step=5mm,gray!20] (-4,-4) grid (4,3);
\node[draw] (a) at (0,0) {a};  
\foreach \pos in {above,above right,right,below right,below,below left,left,above left}
  \node[draw,\pos = of a] () {\pos};
\end{scope}
\end{tikzpicture} 

\end{document}

Bildbeschreibung hier eingeben

Im pgfmanualFolgenden werden einige weitere Optionen erläutert, die über diese Bibliothek verfügbar sind.

Beziehen wir uns nun auf das konkrete Beispiel zur ursprünglichen Frage. Das folgende Beispiel zeigt den Originalcode, in dem alles manuell erledigt wurde. Anschließend wurde dasselbe Diagramm erstellt, bei dem die positioningBibliothek und einige der oben genannten Ideen verwendet wurden:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}

\begin{tikzpicture}  
\node (a) at (0,0) {a};  
\node (b) at (2,1) {b};
\draw (a) -- (0,1);
\draw (0,1) -- (b);  
\begin{scope}[xshift=3cm,on grid]  
\node (a) at (0,0) {a};  
\node[above right= 1cm and 2cm of a] (b) {b};
\draw (a) |- (b);
\end{scope}
\end{tikzpicture} 

\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen