TikZ 思维导图:节点之间的距离

TikZ 思维导图:节点之间的距离

如何设置节点之间的距离边缘而不是节点中心中心仍是锚点吗?

这里边之间的距离不同(因为子节点的大小不同):

\documentclass[tikz,border=5]{standalone}
\usetikzlibrary{mindmap}

\tikzset{
    every node/.append style={concept, rectangle, minimum size=0cm, inner sep=2mm, text width=, minimum size=0cm}
}

\begin{document}

\begin{tikzpicture}[mindmap,text=white,fill=white]
\path node {O} [clockwise from=45, level 1/.append style={sibling angle=45} ]
child { node[align=center] {AAAAAAAAAAAAAAAAAA\\AAAAAAAAAAAAAAAAAA\\AAAAAAAAAAAAAAAAAA\\AAAAAAAAAAAAAAAAAA\\AAAAAAAAAAAAAAAAAA\\AAAAAAAAAAAAAAAAAA\\AAAAAAAAAAAAAAAAAA\\AAAAAAAAAAAAAAAAAA\\AAAAAAAAAAAAAAAAAA} }
child { node {BBB} };
\end{tikzpicture}

\end{document}

答案1

mindmap据我所知,目前还没有现成的解决方案可以使用 TikZ 绘制“常规”思维导图。mindmaps可以绘制出美观的图表如果你想要一张像这样的地图但这种风格有点古怪,而且效率很低。(它没有很好地利用空间,因为圆形节点不能构成紧凑的地图。)

结果是,您想要绘制思维导图这一事实并不一定是mindmaps一个好的选择。mindmap从这个意义上讲,旨在具有特定的外观和感觉,并旨在构建为tree具有循环增长功能的。如果您想要一个外观不同的思维导图(无论是不那么古怪还是只是以不同的方式古怪),其他选择可能更好。

在 TikZ 中还有其他非手动方式放置节点。节点可以放置在网格上、在 中matrix of nodes、在 中chain、在 中treemindmap假设节点是 的一部分tree并在其基础上构建,但还有其他使用 的方法tree)。例如,您还可以使用极坐标而不是笛卡尔坐标(特别适合将节点放置在中心根或点周围)。此外还有其他可能性。

这是一个使用该库的小示例chains,它设置了一条从根向东北延伸的链和一条向西南延伸的分支。

我不确定您为什么要避免指定anchor任何其他内容,center除非您似乎想使用节点边界上的点而不是中心点来锚定节点。这不正是替代锚点所针对的情况吗?

当然,这种特殊情况可以更容易地绘制为一条单一的、无分支的链。但我假设您将有其他第一级子节点相对于根节点放置,因此希望所有链/分支都从该点开始。因此我这样设置了它。

\documentclass[tikz,border=10pt,multi]{standalone}
\usetikzlibrary{chains,scopes}
\begin{document}
  \begin{tikzpicture}[every on chain/.append style={inner sep=2mm, fill, text=white, join={by {line width=1mm, shorten >=-1mm, shorten <=-1mm }}}]
    {[start chain=main going {at=(\tikzchainprevious), shift=(45:1), anchor=south west}]
      \node [on chain] {O};
      {[start branch=first going {at=(\tikzchainprevious), shift=(-135:1), anchor=north east}]
        \node [on chain] {BBB};
      }
      \node [on chain, align=center] {AAAAAAAAAAAAAAAAAA\\AAAAAAAAAAAAAAAAAA\\AAAAAAAAAAAAAAAAAA\\AAAAAAAAAAAAAAAAAA\\AAAAAAAAAAAAAAAAAA\\AAAAAAAAAAAAAAAAAA\\AAAAAAAAAAAAAAAAAA\\AAAAAAAAAAAAAAAAAA\\AAAAAAAAAAAAAAAAAA};
    }
\end{tikzpicture}
\end{document}

链接节点

然后,你可以用各种方式来开发它。例如

开发链

\documentclass[tikz,border=10pt,multi]{standalone}
\usetikzlibrary{chains,scopes,shadows}
\begin{document}
  \begin{tikzpicture}[every on chain/.append style={inner sep=2mm, inner color=black, outer color=black!90, draw, thick, drop shadow, rounded corners, text=white, join={by {line width=1mm, shorten >=-1mm, shorten <=-1mm }}}]
    {[start chain=main going {at=(\tikzchainprevious.north east), shift=(45:1), anchor=south west}]
      \node [on chain] {O};
      {[start branch=first going {at=(\tikzchainprevious.south west), shift=(-135:1), anchor=north east}]
        \node [on chain] {BBB};
      }
      {[start branch=second going {at=(\tikzchainprevious.north west), shift=(135:1), anchor=south east}]
        \node [on chain] {Orangutans};
        \node [on chain] {Aardvarks};
      }
      \node [on chain, align=center] {AAAAAAAAAAAAAAAAAA\\AAAAAAAAAAAAAAAAAA\\AAAAAAAAAAAAAAAAAA\\AAAAAAAAAAAAAAAAAA\\AAAAAAAAAAAAAAAAAA\\AAAAAAAAAAAAAAAAAA\\AAAAAAAAAAAAAAAAAA\\AAAAAAAAAAAAAAAAAA\\AAAAAAAAAAAAAAAAAA};
      \node [continue chain=going below, on chain, anchor=north] {Bees};
    }
\end{tikzpicture}
\end{document}

相关内容