我正在尝试 TikZ/PGF 的算法图形绘制功能,一开始我非常兴奋。然而,现在我陷入了困境。
下面是我的示例。我认为如果将节点“J”向下向左移动并将节点“G”移到循环 AIJFA 内,图表看起来会更好。
到目前为止,我已经尝试了不同的随机种子和 TeX 文件中线条的不同随机顺序。我还尝试过使用绝对节点定位,力导向绘图会对其进行微调,但从未产生任何结果。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{graphs,graphdrawing}
\usegdlibrary{force}
\begin{document}
\tikz \graph [spring layout, random seed=1] {
A -- F;
A -- G;
A -- I;
B -- F;
C -- D;
C -- F;
D -- E;
D -- H;
D -- I;
E -- I;
F -- J;
G -- I;
G -- J;
I -- J;
};
\end{document}
答案1
我看到你正在使用spring layout
,但在我看来,生成的图形更像是分布式电荷(电荷),这让我认为更合适。只需使用它,您就已经在最终图形中spring electrical layout
看到了差异。此外,要微调图形,您可以使用键nudge=<coordinate>
(或变体nudge up
、down
和),虽然在我看来它似乎有点简陋,但如果绘图需要“简单”的推动,那么就可以了:left
right
\documentclass[tikz,border=5mm]{standalone}
\usetikzlibrary{graphs,graphdrawing}
\usegdlibrary{force}
\begin{document}
\tikz \graph [spring electrical layout, random seed=1] {
A -- F;
A -- I;
B -- F;
C -- D;
C -- F;
D -- E;
D -- H;
D -- I;
E -- I;
F -- J[nudge=(210:10mm)];
I -- J;
G[nudge=(260:11mm)] -- J;
G -- A;
G -- I;
};
\end{document}
您还可以尝试将electric charge
s 设置为节点,微调它们排斥(正值)或吸引(负值)连接节点的强度。但这种方式的结果有时相当难以预测。
第二种方法
如果您查看上图,似乎节点与节点和J
之间存在不可见的连接。对于具有 的节点,情况也是如此。我的想法是,如果我可以建立这种不可见的连接,那么生成的图形可能就是 OP 想要的,没有任何s 并且图形更可靠。为此,我们必须在建立连接时为 line-to 运算符 ( ) 提供选项(我还冒昧地将代码缩短了一点):C
D
G
F
nudge
--
draw=none
\documentclass[tikz,border=5mm]{standalone}
\usetikzlibrary{graphs,graphdrawing}
\usegdlibrary{force}
\begin{document}
\tikz \graph [spring electrical layout] {
A -- F -- C -- D -- E -- I -- A;
D -- I;
B -- F;
H -- D;
I -- J -- F;
I -- G -- A;
G -- J;
% invisible connections
D --[draw=none] J --[draw=none] C;
G --[draw=none] F;
};
\end{document}
结果与以前几乎相同,但这次应该不会出现错误: