Knoten in TikZ falsch verbunden

Knoten in TikZ falsch verbunden

Ich möchte folgendes erreichen:

Bildbeschreibung hier eingeben

Allerdings funktioniert das Verbinden der Knoten nicht richtig. Ich erhalte folgende Ausgabe:

Bildbeschreibung hier eingeben

Wie behebe ich das und was mache ich falsch?

MWE:

\documentclass[tikz]{article}
\usepackage{tikz}
\tikzset{square/.style = {
    shape  = rectangle,
    fill   = gray!50,
    draw   = black,
    thick
}}

\tikzset{circle/.style = {
    shape  = circle,
    fill   = blue!20,
    draw   = blue,
    thick
}}

\begin{document}
\begin{tikzpicture}
  \draw[square] (-4,4)rectangle node (r1) {r1} (-3,5);
  \draw[circle] (-1,4.5) circle [radius=0.5cm] node (s1) {s1};
  \draw[->] (r1.west) -- (s1.east);

\end{tikzpicture}
\end{document} 

Bitte beachten Sie, dass ich mich an den Ansatz halten möchte,\draw[->] (r1.west) -- (s1.east);

Antwort1

Richtiges Bild

\documentclass[tikz,margin=3mm]{standalone}
\tikzset{squarenode/.style = {
    shape  = rectangle,
    fill   = gray!50,
    draw   = black,
    thick,
    minimum size=1cm %%%% Take note of this!
},
    circlenode/.style = {
    shape  = circle,
    fill   = blue!20,
    draw   = blue,
    thick,
    minimum size=1cm %%%% and this!
}}

\begin{document}
\begin{tikzpicture}
  \draw (-4,4.5) node[squarenode] (r1) {r1}; % Or \node[squarenode] (r1) at (-4,4.5) {r1};
  \draw (-1,4.5) node[circlenode] (s1) {s1}; % Or \node[circlenode] (s1) at (-1,4.5) {s1};
  \draw[->] (r1) -- (s1); % or (r1.east)--(s1.west);

\end{tikzpicture}
\end{document} 

Bildbeschreibung hier eingeben

Einige Hinweise (wichtig!)

  1. circleist eine definierte Option, daher dürfen Sie kein neues definieren circle. Ich habe es in geändert circlenode.
  2. Sie müssen den Kreis und das Quadrat nicht manuell zeichnen. Sie können die Form im Knoten und verwenden minimum size. Für mehr Kontrolle haben wir minimum heightund minimum width.
  3. Ich empfehle nicht, viele \tikzset{}s zu verwenden.
  4. tikzist keine Option von article. Es ist eine Option von standalone. Wenn Sie tikzdie Option bereits geladen haben, brauchen Sie nicht \usepackage{tikz}.

Unterschied bei Verwendung von (r1)--(s1)und(r1.east)--(s1.west)

\documentclass[tikz,margin=3mm]{standalone}
\begin{document}
\begin{tikzpicture}
\node[draw] (a) at (0,0) {Some text};
\node[draw] (b) at (5,3) {Hello world};
\draw[thick] (0,0)--(5,3);
\draw[red] (a)--(b);
\draw[blue] (a.east)--(b.west);
\end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

Schauen Sie sich den Anfangs- und Endpunkt der roten und der blauen Linie genau an.

verwandte Informationen