Gráficos TikZ: especificar el anclaje del objetivo del borde

Gráficos TikZ: especificar el anclaje del objetivo del borde

Tengo el siguiente código:

\documentclass[tikz]{standalone}
\usetikzlibrary{graphs}
\begin{document}
\tikz \graph[grow right sep=20,nodes={draw,rectangle}] { a -> {b, long node name} };
\end{document}

Lo que produce esta salida:Salida MWE: a -> {b, nombre de nodo largo}

Me gustaría que el borde "a" -> "nombre de nodo largo" no vaya de este a norte sino de sur a oeste. ¿Es esto posible mientras se sigue utilizando una sola llamada \graph? ¿O necesito especificar esa ventaja manualmente en un comando adicional?

(Es decir, tengo básicamente el mismo problema que en la preguntaAncla de borde en tikz, pero quiero usar las capacidades de dibujo de gráficos de TikZ en lugar de crear bordes manualmente).

Respuesta1

Para obtener el ancla oeste para el nodo, long node namepuede utilizar right anchor=west.

Código

\documentclass[tikz]{standalone}
\usetikzlibrary{graphs}
\begin{document}
\tikz \graph[grow right sep=20,nodes={draw,rectangle},right anchor=west] { a -> {b, long node name} };
\end{document}

Resultado

ingrese la descripción de la imagen aquí

Respuesta2

Esto es lo que quieres, creo. ingrese la descripción de la imagen aquí

Nunca usé \graph. La forma natural en que hago algo como lo que pediste es usando \nodes y anchors, de la siguiente manera:

\documentclass[tikz]{standalone}
\usetikzlibrary{graphs}
\usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}
    \node[draw] (a) {a};
   \node[draw,anchor=west] (b) at ($(a)+(1cm,0)$) {b};
   \node[draw,anchor=west] (c) at ($(a)+(1cm,-1cm)$) {long node name};
   \draw[->] (a) -- (b);
   \draw[->] (a.south) -- (c.west);
\end{tikzpicture}
\end{document}

Claro, debes establecer una distancia adecuada entre los nodos; si no es así, la punta de la flecha podría cruzar el rectángulo, pero no hay otra manera de evitarlo que cambiar las puntas de las flechas. Además, puedes utilizar flechas curvas.

información relacionada