![如何绘制固定聚集节点的力图?](https://linux22.com/image/443654/%E5%A6%82%E4%BD%95%E7%BB%98%E5%88%B6%E5%9B%BA%E5%AE%9A%E8%81%9A%E9%9B%86%E8%8A%82%E7%82%B9%E7%9A%84%E5%8A%9B%E5%9B%BE%EF%BC%9F.png)
答案1
Ti 提供了几种方法钾Z 表示具有很多选项的力图。由于处理方式比较特殊,我建议您查看相关章节(“图形绘制算法:基于力的方法”)。钛钾Z 手册。
不过,我只得到了节点距离大致相等的解决方案。以下代码需要 LuaLaTeX 进行编译:
\documentclass[tikz,border=5mm]{standalone}
\usetikzlibrary{graphs.standard, graphdrawing}
\usegdlibrary{force}
\begin{document}
\tikz \graph[spring electrical layout, nodes={draw, circle, electric charge=2}, edges={very thick}] {
// {
4 -- 2 -- 1 -- 4
},
// {
3 -- 5bar[as={$\overline{5}$}] -- 4bar[as={$\overline{4}$}] -- 3
},
// {
5 -- 1a[as={1}] -- 2a[as={2}] -- 5
},
4[electric charge=5] --[thin, length=2] 4bar;
5[electric charge=5] --[thin] 5bar;
};
\tikz \graph[spring layout, node distance=2cm, nodes={draw, circle}, edges={very thick}] {
// {
4 -- 2 -- 1 -- 4
},
// {
3 -- 5bar[as={$\overline{5}$}] -- 4bar[as={$\overline{4}$}] -- 3
},
// {
5 -- 1a[as={1}] -- 2a[as={2}] -- 5
},
4 --[thin] 4bar;
5 --[thin] 5bar;
};
\end{document}
更新
不知何故,弹簧布局的效果(旨在将所有节点等距放置)无法轻易被其他布局覆盖以形成集群。例如,我没有使用圆形子图或简单的项链布局,因为两者都因放置机制而扭曲。树形布局似乎或多或少不受这种影响,但您需要手动设置单个集群的方向。
经过多次反复尝试后,我想出了这种方法,可能对您有用:
\documentclass[tikz,border=5mm]{standalone}
\usetikzlibrary{graphs.standard, graphdrawing}
\usegdlibrary{force, trees}
\begin{document}
\tikz \graph[spring layout, node distance=4cm, nodes={draw, circle}, ] {
// [tree layout, node distance=1cm, edges={very thick}] {
[clique] 1 -- 2 -- 4;
};
// [tree layout, node distance=1cm, edges={very thick}] {
[clique] 4bar[as={$\overline{4}$}] -- 3 -- 5bar[as={$\overline{5}$}]
};
// [tree layout, node distance=1cm, edges={very thick}, orient=90] {
[clique] 5 -- 1a[as={1}] -- 2a[as={2}]
};
4 -- 4bar;
5bar -- 5;
4 --[draw=none] 5; % to keep the graph together, probably unnecessary if you have more connected clusters
};
\end{document}