我正在尝试使用 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}