Zeichnen eines Graphen mit pgfmathparse+matrix

Zeichnen eines Graphen mit pgfmathparse+matrix

Ich möchte ein Diagramm zeichnen. Ich verwendeTikz-Matrixum die Eckpunkte zu zeichnen und dann Kanten aus einem Array hinzuzufügen. Ich habe den folgenden Code ausprobiert:

\documentclass{article}
\usepackage{tikz,pgfmath}
\usetikzlibrary{matrix}
\begin{document}
  \begin{tikzpicture}
    \matrix (w) [nodes={circle,draw,scale=0.66}, matrix of nodes, row sep=2em, column sep=0.5em]{    
      1&2&3\\
      &4&5\\
      &6\\
    };
    \def\V{{"w-1-1","w-1-2","w-1-3","w-2-2","w-2-3","w-3-2"}}
    %\draw[->] (\V[1]) to (\V[2]); %Line A
    %\node at (1,1) {\pgfmathparse{\V[2]}\pgfmathresult}; %Line B
    \draw[->] (\pgfmathparse{\V[1]}\pgfmathresult) to (\pgfmathparse{\V[2]}\pgfmathresult); %Line C
  \end{tikzpicture}
\end{document}

Ich habe es versuchtLinie Azuerst, und es hat nicht funktioniert. Es stellte sich heraus, dass ich, um richtig auf das Array zuzugreifen, verwenden musspdfmathparse. Aber der Code wird nicht kompiliert (obwohlLinie Bfunktioniert einwandfrei). (Es scheint, dass die Ausgabe vonpgfmathresultist eine Zeichenfolge, die nicht das ist, wasziehenerwartet.)

PS: Die ursprüngliche Motivation bestand darin, Graph Pebbling kurz und bündig darzustellen. Ich habe auf jeden Fall den endgültigen Code zusammen mit dem Ergebnis angehängt.

\documentclass{article}
\usepackage{tikz,pgfmath,xstring,algorithm}
\usetikzlibrary{matrix}

\newcommand{\Configuration}[6]{%A fixed graph
  \begin{minipage}{.2\textwidth}%1
    \begin{tikzpicture}
      \matrix (w) [nodes={circle,draw,scale=0.6}, matrix of nodes, row sep=2em, column sep=0.5em,ampersand replacement=\&]{   
    1\&2\&3\\
    \&4\&5\\
    \&6\\
      };
      \def\V{{"w-1-1","w-1-2","w-1-3","w-2-2","w-2-3","w-3-2"}}%the mapping
      \foreach \x/\y/\z in {{1/4/#1},{2/4/#2},{3/4/#3},{3/5/#4},{4/6/#5},{5/6/#6}}%pebbling
    \pgfmathsetmacro{\X}{\V[\x-1]}
    \pgfmathsetmacro{\Y}{\V[\y-1]}
    \draw[->] (\X) to node {\ifthenelse{\z=0}{}{$\bullet$}} (\Y);
    \end{tikzpicture}
  \end{minipage}
}

\begin{document}
  \begin{figure}
    \centering
    \Configuration{0}{0}{0}{0}{0}{0}
    \Configuration{1}{0}{0}{0}{0}{0}
    \Configuration{1}{1}{0}{0}{0}{0}
    \Configuration{1}{1}{1}{0}{0}{0}
    \Configuration{1}{1}{1}{0}{1}{0}
    \Configuration{1}{1}{0}{0}{1}{0}
    \Configuration{1}{0}{0}{0}{1}{0}
    \Configuration{0}{0}{0}{0}{1}{0}
    \Configuration{0}{0}{0}{1}{1}{0}
    \Configuration{0}{0}{0}{1}{1}{1}
    \Configuration{0}{0}{0}{0}{1}{1}
  \end{figure}
\end{document}

Bildbeschreibung hier eingeben

Antwort1

Ich bin nicht sicher, was Sie wollen, aber ich denke, das \pgfmathsetmacrolöst Ihr Problem:

\documentclass [border=2mm]{standalone}
\usepackage{tikz}
\usepackage{tikz,pgfmath}
\usetikzlibrary{matrix}

\begin{document}
  \begin{tikzpicture}
    \matrix (w) [nodes={circle,draw,scale=0.66}, matrix of nodes, row sep=2em, column sep=0.5em]{    
      1&2&3\\
      &4&5\\
      &6\\
    };
    \def\V{{"w-1-1","w-1-2","w-1-3","w-2-2","w-2-3","w-3-2"}}
    \pgfmathsetmacro{\start}{\V[1]}
    \pgfmathsetmacro{\finish}{\V[2]}
    \draw[->] (\start) to (\finish); %Line C
  \end{tikzpicture}
\end{document}

Ergebnis

verwandte Informationen