¿Cómo posicionar un elemento en relación con un ancla?

¿Cómo posicionar un elemento en relación con un ancla?

Mi código es:

\begin{center}
    \vspace{-20pt}
    \begin{tikzpicture}[mybox/.style={rectangle, draw, minimum width=10mm, minimum height=10mm}]
    \foreach \addr/\val [count=\x] in {$0$,$1$/$28$,$6$/$\infty$,$6$/$\infty$,$6$/$25$,$0$,$6$/$\infty$} {
        \node (node\x) [mybox] at (\x,0) {\addr};
        \node[above=5mm] at (\x,0) {\footnotesize \x};
        \node[below=5mm] at (\x,0) {\val};
    }
    \node at (node1.south west-100mm,0) [below=5mm] {Edge Weight:};
    \draw[ultra thick] (node1.south west) rectangle (node7.north east);
    \end{tikzpicture}
\end{center}

Recibo un error en la línea \node (lab) at (node1.south west-100mm,0) [below=5mm] {Edge Weight:};correspondiente a la sección (node1.south west-100mm,0)sobre el uso del ancla como coordenada.

El error:

Error matemático de PGF del paquete: función desconocida 'nodo1' (en 'nodo1.south west-100mm'). \nodo en (nodo1.suroeste-100mm,0)

Error matemático de PGF del paquete: función desconocida 'nodo1' (en 'nodo1.south west-100mm'). ...est-100mm,0) [abajo=5mm] {Peso del borde:};

Quiero que la posición del nodo labesté a una distancia de (-100pt,0) del anclaje suroeste del nodo0. ¿Cómo hago esto?

Incluso intenté escribir:

(node1.south west)+(-1,0)

Pero eso tampoco funciona. ¿Cómo soluciono este problema?

PD: Sé que escribir \path (node1.south west) node at +(-35pt,-8pt) {Edge Weight:};resolvería el problema, pero ¿hay alguna manera de hacerlo directamente sin usar el comando de ruta y simplemente usando el comando de nodo?

Respuesta1

Puedes usar xshift:

\documentclass{article}
\usepackage{tikz}
\begin{document}

    \begin{tikzpicture}[mybox/.style={rectangle, draw, minimum width=10mm, minimum height=10mm}]
    \foreach \addr/\val [count=\x] in {$0$,$1$/$28$,$6$/$\infty$,$6$/$\infty$,$6$/$25$,$0$,$6$/$\infty$} {
        \node (node\x) [mybox] at (\x,0) {\addr};
        \node[above=5mm] at (\x,0) {\footnotesize \x};
        \node[below=5mm] at (\x,0) {\val};
    }
    \node at ([xshift=-10]node1.south west) [below=5mm] {Edge Weight:};
    \draw[ultra thick] (node1.south west) rectangle (node7.north east);
    \end{tikzpicture}

\end{document}

Con este pequeño ajuste tu código produce:

ingrese la descripción de la imagen aquí

Por si sirve de algo, para que el código sea más fácil de leer, reemplazaría el bucle for con

    \foreach \addr/\val [count=\x] in {0,1/28,6/\infty,6/\infty,6/25,0,6/\infty} {
        \node (node\x) [mybox] at (\x,0) {$\addr$};
        \node[above=5mm] at (\x,0) {\footnotesize \x};
        \node[below=5mm] at (\x,0) {$\val$};
    }

Respuesta2

Si desea utilizar la calcbiblioteca, debe escribir la operación de su nodo como:

 \node at ($(node1.south west)+(-1,0)$) 

y tendrás:

resultado

Código completo:

\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[mybox/.style={rectangle, draw, minimum width=10mm, minimum height=10mm}]
    \foreach \addr/\val [count=\x] in {$0$,$1$/$28$,$6$/$\infty$,$6$/$\infty$,$6$/$25$,$0$,$6$/$\infty$} {
        \node (node\x) [mybox] at (\x,0) {\addr};
        \node[above=5mm] at (\x,0) {\footnotesize \x};
        \node[below=5mm] at (\x,0) {\val};
    }
    \node at ($(node1.south west)+(-1,0)$) [below=5mm] {Edge Weight:};
    \draw[ultra thick] (node1.south west) rectangle (node7.north east);
\end{tikzpicture}
\end{document}

información relacionada