Gráficos TikZ: especifique a âncora de destino da borda

Gráficos TikZ: especifique a âncora de destino da borda

Eu tenho o seguinte 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}

O que produz esta saída:Saída MWE: a -> {b, nome longo do nó}

Eu gostaria que a borda "a" -> "nome longo do nó" não fosse de leste para norte, mas de sul para oeste. Isso é possível usando apenas uma chamada \graph? Ou preciso especificar essa borda manualmente em um comando extra?

(Ou seja, tenho basicamente o mesmo problema da perguntaÂncora de borda no tikz, mas quero usar os recursos de desenho gráfico do TikZ em vez de criar bordas manualmente.)

Responder1

Para obter a âncora oeste para o nó, long node namevocê pode usar 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

insira a descrição da imagem aqui

Responder2

Isso é o que você quer, eu acho. insira a descrição da imagem aqui

Eu nunca usei \graph. A maneira natural de fazer algo parecido com o que você pediu é usando \nodes e anchors, da seguinte maneira:

\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, você deve definir uma distância adequada entre os nós; caso contrário, a ponta da seta poderá cruzar o retângulo, mas não há maneira de evitar isso a não ser alterando as pontas da seta. Além disso, você pode usar setas curvas.

informação relacionada