Графики TikZ: Укажите привязку целевого края

Графики TikZ: Укажите привязку целевого края

У меня есть следующий код:

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

Что дает следующий результат:Вывод MWE: a -> {b, длинное имя узла}

Я хотел бы, чтобы ребро "a" -> "длинное имя узла" шло не с востока на север, а с юга на запад. Возможно ли это, используя только один вызов \graph? Или мне нужно указать это ребро вручную в дополнительной команде?

(То есть у меня в принципе та же проблема, что и в вопросе)Крайний якорь в тикзе, но я хочу использовать возможности рисования графиков TikZ вместо ручного создания ребер.)

решение1

Чтобы получить западный якорь для узла, long node nameвы можете использовать right anchor=west.

Код

\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}

Результат

введите описание изображения здесь

решение2

Я думаю, это то, что вам нужно. введите описание изображения здесь

Я никогда не использовал \graph. Обычный способ, которым я делаю что-то вроде того, о чем вы спросили, — это использовать \nodes и anchors, как показано ниже:

\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}

Конечно, вам нужно установить правильное расстояние между узлами; если это не так, наконечник стрелки может пересечь прямоугольник, но нет способа избежать этого, кроме как изменить наконечники стрелок. Кроме того, вы можете использовать изогнутые стрелки.

Связанный контент