让箭头在 TikZ 中不接触

让箭头在 TikZ 中不接触

我正在尝试使用 TikZ 制作一个相当简单的图表,类似于以下示例:

\begin{tikzpicture}
\draw [->] (0,0) node[anchor=south]{A} -- (1,-2) node[anchor= north]{D};
\draw [->] (1,0) node[anchor=south]{B} -- (1,-2);
\draw [->] (2,0) node[anchor=south]{C} -- (1,-2);
\end{tikzpicture}

\begin{tikzpicture}
\draw [->] (1,0) node[anchor=south]{E} -- (0,-2) node[anchor= north]{F};
\draw [->] (1,0) -- (1,-2) node[anchor=north]{G};
\draw [->] (1,0) -- (2,-2) node[anchor=north]{H};
\end{tikzpicture}

我希望我不喜欢第一张图片的地方已经很清楚了:我更希望箭头在 D 上方分散,而不是全部坍缩到一个点。

第二张图片并没有让我感到困扰,因为这里的聚类只是线段和箭头,但如果有办法让三条边也间隔开来,那就太好了。(参见所选答案中的顶部图表发布一张我想要的东西的插图。

当然,我可以人为地实现所有这些结果,只需单独放置节点,然后调整箭头末端的坐标即可。但如果有更简单的解决方案就太好了。非常感谢您的任何见解。

答案1

我会使用 a\node来放置 D,然后使用节点名称绘制线条。这会自动解决问题。另一个选项是使用 将shorten=<dimension>箭头的末端缩短给定的尺寸。您还可以明确控制箭头的终点,如我的第三个示例所示。

\documentclass{article}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
  \node[anchor=north] at (1,-2) (D) {D};
  \draw [->] (0,0) node[anchor=south]{A} -- (D);
  \draw [->] (1,0) node[anchor=south]{B} -- (D);
  \draw [->] (2,0) node[anchor=south]{C} -- (D);
  \end{tikzpicture}

\begin{tikzpicture}
  \node[anchor=north] at (1,-2) (D) {D};
  \draw [->,shorten >=3pt] (0,0) node[anchor=south]{A} -- (D);
  \draw [->,shorten >=3pt] (1,0) node[anchor=south]{B} -- (D);
  \draw [->,shorten >=3pt] (2,0) node[anchor=south]{C} -- (D);
  \end{tikzpicture}

\begin{tikzpicture}
  \node[anchor=north] at (1,-2) (D) {D};
  \draw [->] (0,0) node[anchor=south]{A} -- (D.120);
  \draw [->] (1,0) node[anchor=south]{B} -- (D.90);
  \draw [->] (2,0) node[anchor=south]{C} -- (D.60);
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

一种可能性是使用shorten >=参数。

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\begin{scope}[->,shorten >=9pt]
  \draw (0,0) node[anchor= south]{A} -- (1,-2) node[anchor= north]{D};
  \draw (1,0) node[anchor= south]{B} -- (1,-2);
  \draw (2,0) node[anchor= south]{C} -- (1,-2);
\end{scope}
\begin{scope}[->,shorten <=9pt,xshift=3cm]
  \draw (1,0) node[anchor= south]{E} -- (0,-2) node[anchor= north]{F};
  \draw (1,0) -- (1,-2) node[anchor= north]{G};
  \draw (1,0) -- (2,-2) node[anchor= north]{H};
\end{scope}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容