TikZ - einen Pfeil parallel zu einer Linie zeichen

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: TikZ - einen Pfeil parallel zu einer Linie zeichen

von Igeloeffnung » Mi 4. Mai 2011, 21:11

Hi,

vielen dank, das sieht perfekt aus. und ich verspreche, dass ich das nächste mal ein Minimalbeispiel angebe.

Gruß igel

von esdd » Mi 4. Mai 2011, 20:45

Hallo,

bitte mach das nächste Mal wirklich ein Minimalbeispiel, dann hätte man sofort gewußt, dass die Noden nicht unter- bzw. nebeneinander liegen und Kreise sind.
Hier ist nun noch ein Vorschlag, bei dem du die Länge der Pfeile von Hand anpassen musst:
\documentclass{scrartcl} 

\usepackage[T1]{fontenc} 
\usepackage[utf8]{inputenc} 

\usepackage{tikz}
\usetikzlibrary{calc}

\colorlet{NGray}{black!20}

\newcommand\Parallele[6][]{%
  \coordinate(Mitte)at($(#2)!0.5!(#4)$);%
  \draw[#1]($($(Mitte)!#3!(#2)$)!#6!270:(#2)$)--($($(Mitte)!#5!(#4)$)!#6!90:(#4)$);%
  }
% Syntax:\Parallele[<Optionen wie Pfeilspitze etc.>]%
%                   {<Punkt1>}{<Abstand Parallenmitte bis -ende Richtung Punkt1}%
%                   {<Punkt2>}{<Abstand Parallenmitte bis -ende Richtung Punkt2}%
%                  {<Abstand der Parallele>}
% werden Punkt1 und Punkt2 vertauscht, dann liegt die Parallele auf der anderen Seite

\begin{document} 
\begin{tikzpicture}[every node/.style={draw,circle}] 
  \node(A) at (0,0){A};
  \node[fill=NGray](B) at (2.5,-0.5){B};
  \node[fill=NGray](D) at (2,-2){D};
  \path(A)edge(B)%
          edge(D);
  \Parallele[latex-]{A}{0.8cm}{B}{0.8cm}{2mm}
  \Parallele[-latex]{D}{0.9cm}{A}{0.9cm}{2mm}
\end{tikzpicture}
\end{document}
Gruß
Elke

PS: Damit die Parallele auf der anderen Seite liegt, kann man auch einfach ein Minus vor den Abstand setzen (statt die Punkte zu vertauschen).
\Parallele[-latex]{D}{0.9cm}{A}{0.9cm}{2mm} liefert das gleiche wie \Parallele[latex-]{A}{0.9cm}{D}{0.9cm}{-2mm}

von Igeloeffnung » Mi 4. Mai 2011, 18:20

Hi,

das sieht ja schon ganz gut aus, aber ich hätte dann doch ganz gerne runde nodes. Um ganz genau zu werden, habe ich mal ein Bild angehängt, von dem graph den ich tikz'en möchte.

Gruß Igel
Dateianhänge
graph.png
graph.png (21.64 KiB) 3357 mal betrachtet

von esdd » Mi 4. Mai 2011, 18:09

Hallo,

anderer Vorschlag für rechteckige Noden:
\documentclass{scrartcl} 

\usepackage[T1]{fontenc} 
\usepackage[utf8]{inputenc} 

\usepackage{tikz} 

\begin{document} 
\begin{tikzpicture} 
  \node[draw](a) at (0,0){Node a};
  \node[draw](b) at (3,-2){Node b};
  \path (a)edge(b); 
  \path[transform canvas={xshift=2mm},-latex] (a)edge(b);
\end{tikzpicture} 
\end{document} 
Gruß
Elke

von Igeloeffnung » Mi 4. Mai 2011, 17:32

Hallo,
danke für den Tip. Das ist auch schon sehr nah an dem was ich haben möchte. Wenn die Nodes jetzt aber nicht direkt übereinander oder nebeneinander liegen, müsste ich den xshift ja auch wieder per Hand anpassen.
Beispielsweise habe ich hier node (b) etwas verschoben und da klappt sieht es nicht mehr gut aus.
\documentclass{scrartcl}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
  \node[draw](a) at (0,0){Node a};
  \node[draw](b) at (3,-2){Node b};
  \path (a)edge(b);
  \draw[-latex] ([xshift=1mm]a.south)--([xshift=1mm]b.north);
\end{tikzpicture}
\end{document}

von esdd » Mi 4. Mai 2011, 17:02

Hallo,

bitte erstelle möglichst immer ein Minimalbeispiel. Vielleicht passt der Vorschlag:
\documentclass{scrartcl}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
  \node[draw](a) at (0,0){Node a};
  \node[draw](b) at (0,-2){Node b};
  \path (a)edge(b);
  \draw[-latex] ([xshift=1mm]a.south)--([xshift=1mm]b.north);
\end{tikzpicture}
\end{document}
Gruß
Elke

TikZ - einen Pfeil parallel zu einer Linie zeichen

von Igeloeffnung » Mi 4. Mai 2011, 10:43

Hallo,

ich suche schon einige Zeit nach einer Möglichkeit, einen Pfeil parallel zu einer Linie zu Zeichen. Etwas genauer:

Ich möchte einen Graphen zeichnen, also Nodes und die untereinander mit, z.B. \draw (a) -- (b); verbinden.
Jetzt möchte ich an einigen Verbindungen zwischen den Nodes, einen Pfeil zeichnen, parallel zur Verbindung.

Ich habe schon einiges versucht, aber nichts hat geklappt.

Kann mir da vielleicht jemand helfen ?


Gruß Igel

Nach oben