编辑

编辑

我想在 Ti 中绘制类似这样的图表Z.我的代码是:

\documentclass[a4paper]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}    
\begin{tikzpicture}

    \node (wrijving)                           {wrijving};
    \node (lading)   [right=of wrijving]       {(onzichtbare) lading};
    \node (elkracht) [below=of lading]         {elektrische kracht};
    \node (afst)     [below left=of elkracht]  {afstoten};
    \node (aantr)    [below right=of elkracht] {aantrekken};

    \path (wrijving) edge[->] (lading)
          (lading)   edge[->] (elkracht)
          (elkracht) edge[-] (afst)
                     edge[-] (aantr);
\end{tikzpicture}
\end{document}

由此得出: 图表

可能有更好的方法来绘制它,但我不知道如何。

我还希望“afstoten”和“aantrekken”更接近一些。我知道您可以为below和指定一个值left,但是是否可以有一个正常长度的分支,然后将其旋转 x 度?

答案1

因为它是一棵树,所以可以使用forest包;代码现在相当短,并且您可以使用例如选项来控制两个较低元素的分离calign(请参阅我的示例代码中注释掉的行):

\documentclass{article}
\usepackage{forest}

\begin{document}

\begin{forest}
for tree={edge={->},
%calign=fixed edge angles,
%calign primary angle=-40,calign secondary angle=40
}
[wrijving,grow=0
  [(onzichtbare) lading
    [elektrische kracht    
      [afstoten]
      [aantrekken]
    ]
  ]    
]
\end{forest}

\end{document}

在此处输入图片描述

答案2

这还没有调整定位,但更简洁:

\documentclass[tikz,border=10pt]{standalone}
\usetikzlibrary{chains,scopes}
\begin{document}
  \begin{tikzpicture}[start chain=main going right, every on chain/.append style={join}, every join/.append style={->}]
    \node [on chain] (wrijving) {wrijving};
    \node [on chain] (lading) {(onzichtbare) lading};
    \node [on chain=main going below] (elkracht) {elektrische kracht};
    {[start branch=split going below left]
      \node [on chain] (afst) {afstoten};}
    \node [on chain=main going below right] (aantr) {aantrekken};
\end{tikzpicture}
\end{document}

连锁店

编辑

为了改变图表在分支时的紧凑性,可以为链指定更详细的方向。例如,使用calc库:

\documentclass[tikz,border=10pt]{standalone}
\usetikzlibrary{chains,scopes,calc}
\begin{document}
  \begin{tikzpicture}[start chain=main going right, every on chain/.append style={join}, every join/.append style={->}]
    \node [on chain] (wrijving) {wrijving};
    \node [on chain] (lading) {(onzichtbare) lading};
    \node [on chain=main going below] (elkracht) {elektrische kracht};
    \node [on chain={main placed {at=($(\tikzchainprevious.south)+(-50:1.5)$)}}] (aantr) {aantrekken};
    {[start chain=split]
      \chainin (elkracht);
      \node [on chain=placed {at=($(\tikzchainprevious.south)+(-130:1.5)$)}] (afst) {afstoten};}
\end{tikzpicture}
\end{document}

调整方向

请注意,我非常喜欢forest,如果您的图表真的是树,那就太好了。如果不是——也就是说,如果它们多次改变方向,并且不一定只有一个根——那么forest仍然是一个选择,但chains对于简单的情况来说可能更容易,因为编程能力并不是一个重要的考虑因素。

答案3

我提出了一种替代的、更简洁的解决方案,使用tikz-cd为交换图制作的包,并且(在我看来)语法非常清晰和简单。通过一些简单的技巧,间距也可以轻松调整以产生任何你喜欢的结果:

\documentclass{article}
\usepackage{tikz-cd}
\begin{document}

\begin{tikzcd}
    \mathrm{wrijving} \arrow[rr]& &[-2cm] \mathrm{(onzichtbare)\ lading} \arrow[d] &[-2cm]\\
    & & \mathrm{elektrische\ kracht}\arrow[dl, no head]\arrow[dr, no head]\\
    & \mathrm{afstoten} & & \mathrm{aantrekken}
\end{tikzcd}

\end{document}

其结果如下:

在此处输入图片描述

相关内容