使用graphviz twopi的控制布局

使用graphviz twopi的控制布局,graph,graphviz,Graph,Graphviz,我试图用twopi绘制一个显示搜索前缀的图表。我有一个简单的输入文件,并得到以下输出: 以下是输入文件: digraph search { // ordering=out; // color=blue; // rank=same; // overlap=scale; rankdir=LR; root=root; ranksep=1.25; overlap=true; "root"; a [color=none,fontsize=12]; b [color=none,fontsi

我试图用twopi绘制一个显示搜索前缀的图表。我有一个简单的输入文件,并得到以下输出:

以下是输入文件:

digraph search {

// ordering=out;
// color=blue;
// rank=same;
// overlap=scale;
 rankdir=LR;
 root=root;
 ranksep=1.25;
 overlap=true;

"root";

a [color=none,fontsize=12];
b [color=none,fontsize=12];
c [color=none,fontsize=12];
d [color=none,fontsize=12];
e [color=none,fontsize=12];
f [color=none,fontsize=12];
#g [color=none,fontsize=12];
h [color=none,fontsize=12];
i [color=none,fontsize=12];
j [color=none,fontsize=12];
k [color=none,fontsize=12];
l [color=none,fontsize=12];
m [color=none,fontsize=12];
n [color=none,fontsize=12];
o [color=none,fontsize=12];
p [color=none,fontsize=12];
q [color=none,fontsize=12];
r [color=none,fontsize=12];
s [color=none,fontsize=12];
t [color=none,fontsize=12];
u [color=none,fontsize=12];
v [color=none,fontsize=12];
w [color=none,fontsize=12];
x [color=none,fontsize=12];
y [color=none,fontsize=12];

#ga [color=none,fontsize=12];
gb [color=none,fontsize=12];
gc [color=none,fontsize=12];
gd [color=none,fontsize=12];
ge [color=none,fontsize=12];
gf [color=none,fontsize=12];
gg [color=none,fontsize=12];
gh [color=none,fontsize=12];
gi [color=none,fontsize=12];
gj [color=none,fontsize=12];
gk [color=none,fontsize=12];
gl [color=none,fontsize=12];
gm [color=none,fontsize=12];
gn [color=none,fontsize=12];
go [color=none,fontsize=12];
gp [color=none,fontsize=12];
gq [color=none,fontsize=12];
gr [color=none,fontsize=12];
gs [color=none,fontsize=12];
gt [color=none,fontsize=12];
gu [color=none,fontsize=12];
gv [color=none,fontsize=12];
gw [color=none,fontsize=12];
gx [color=none,fontsize=12];
gy [color=none,fontsize=12];

gaa [color=none,fontsize=12];
gab [color=none,fontsize=12];
gac [color=none,fontsize=12];
gad [color=none,fontsize=12];
gae [color=none,fontsize=12];
gaf [color=none,fontsize=12];
gag [color=none,fontsize=12];
gah [color=none,fontsize=12];
gai [color=none,fontsize=12];
gaj [color=none,fontsize=12];
gak [color=none,fontsize=12];
gal [color=none,fontsize=12];
gam [color=none,fontsize=12];
gan [color=none,fontsize=12];
gao [color=none,fontsize=12];
gap [color=none,fontsize=12];
gaq [color=none,fontsize=12];
#gaz [color=none,fontsize=12];
gas [color=none,fontsize=12];
gat [color=none,fontsize=12];
gau [color=none,fontsize=12];
gav [color=none,fontsize=12];
gaw [color=none,fontsize=12];
gax [color=none,fontsize=12];
gay [color=none,fontsize=12];

gaza [color=none,fontsize=12];
gazb [color=none,fontsize=12];
gazc [color=none,fontsize=12];
gazd [color=none,fontsize=12];
gaze [color=none,fontsize=12];
#gazf [color=none,fontsize=12];
gazg [color=none,fontsize=12];
gazh [color=none,fontsize=12];
gazi [color=none,fontsize=12];
gazj [color=none,fontsize=12];
gazk [color=none,fontsize=12];
gazl [color=none,fontsize=12];
gazm [color=none,fontsize=12];
gazn [color=none,fontsize=12];
gazo [color=none,fontsize=12];
gazp [color=none,fontsize=12];
gazq [color=none,fontsize=12];
gazr [color=none,fontsize=12];
gazs [color=none,fontsize=12];
gazt [color=none,fontsize=12];
gazu [color=none,fontsize=12];
gazv [color=none,fontsize=12];
gazw [color=none,fontsize=12];
gazx [color=none,fontsize=12];
gazy [color=none,fontsize=12];

root -> a  [minlen=2];
root -> b  [minlen=2];
root -> c  [minlen=2];
root -> d  [minlen=2];
root -> e  [minlen=2];
root -> f  [minlen=2];
root -> g  [minlen=2];
root -> h  [minlen=2];
root -> i  [minlen=2];
root -> j  [minlen=2];
root -> k  [minlen=2];
root -> l  [minlen=2];
root -> m  [minlen=2];
root -> n  [minlen=2];
root -> o  [minlen=2];
root -> p  [minlen=2];
root -> q  [minlen=2];
root -> r  [minlen=2];
root -> s  [minlen=20];
root -> t  [minlen=2];
root -> u  [minlen=2];
root -> v  [minlen=2];
root -> w  [minlen=2];
root -> x  [minlen=2];
root -> y  [minlen=2];
root -> 0  [minlen=2];
root -> 1  [minlen=2];
root -> 2  [minlen=2];
root -> 3  [minlen=2];
root -> 4  [minlen=2];
root -> 5  [minlen=2];
root -> 6  [minlen=2];
root -> 7  [minlen=2];
root -> 8  [minlen=2];
root -> 9  [minlen=2];
root -> "."  [minlen=2];

g -> ga  ;
g -> gb  ;
g -> gc  ;
g -> gd  ;
g -> ge  ;
g -> gf  ;
g -> gg  ;
g -> gh  ;
g -> gi  ;
g -> gj  ;
g -> gk  ;
g -> gl  ;
g -> gm  ;
g -> gn  ;
g -> go  ;
g -> gp  ;
g -> gq  ;
g -> gr  ;
g -> gs  ;
g -> gt  ;
g -> gu  ;
g -> gv  ;
g -> gw  ;
g -> gx  ;
g -> gy  ;

ga -> gaa  ;
ga -> gab  ;
ga -> gac  ;
ga -> gad  ;
ga -> gae  ;
ga -> gaf  ;
ga -> gag  ;
ga -> gah  ;
ga -> gai  ;
ga -> gaj  ;
ga -> gak  ;
ga -> gal  ;
ga -> gam  ;
ga -> gan  ;
ga -> gao  ;
ga -> gap  ;
ga -> gaq  ;
ga -> gaz  ;
ga -> gas  ;
ga -> gat  ;
ga -> gau  ;
ga -> gav  ;
ga -> gaw  ;
ga -> gax  ;
ga -> gay  ;

gaz -> gaza  ;
gaz -> gazb  ;
gaz -> gazc  ;
gaz -> gazd  ;
gaz -> gaze  ;
gaz -> gazf  ;
gaz -> gazg  ;
gaz -> gazh  ;
gaz -> gazi  ;
gaz -> gazj  ;
gaz -> gazk  ;
gaz -> gazl  ;
gaz -> gazm  ;
gaz -> gazn  ;
gaz -> gazo  ;
gaz -> gazp  ;
gaz -> gazq  ;
gaz -> gazr  ;
gaz -> gazs  ;
gaz -> gazt  ;
gaz -> gazu  ;
gaz -> gazv  ;
gaz -> gazw  ;
gaz -> gazx  ;
gaz -> gazy  ;

gazo -> "Blue Tuesday" ;
"Blue Tuesday" [ fontsize=10];

// Layout engines: circo dot fdp neato nop nop1 nop2 osage patchwork sfdp twopi 

}
此输出由以下内容生成:

twopi -os1.png -Tpng s1.dot
我在这里发帖是因为打印出来的内容非常糟糕。所有悬挂在“gaz”上的节点重叠;我试图指定
nodesep
,但它被忽略了。我希望看到从根到单个字母的行之间的距离更远,但我还是无法控制

这似乎是twopi中的一个bug。文件上说它应该明确遵循这些指令,但似乎没有

我的问题是:

  • 有没有办法让twopi表现得好一点
  • 否则,是否有更好的布局引擎可供使用

  • 谢谢。

    我发现twopi是所有graphviz布局引擎中最难使用的

    我对你原来的点文件做了一些小改动。渲染图如下所示

    以下是区别:

    图形属性

    • size=“7.75,10.25”;//确保 整个图形适合单个8.5 x 11页

    • 方向=“景观”

    • ranksep=3.0;nodesep=2.0

    • 删除:“根=根”;和 “重叠=真”

    边缘属性:

    • 我将边权重设置为0.1 对于所有边:[重量=0.1]

    将所有边的边权重减少90%会产生增加边长度的净效果(或者更准确地说,放松对边长度的约束);显然,这有助于节点“扇出”。这样做还会增加“g”和“root”之间的距离,从而为“root”的子节点提供更多的空间

    我还调整了一些纯粹的美学属性——对布局没有任何影响,但在我看来,当你需要在单个页面上绘制中等密度的图形时,这似乎很重要:

    图形属性:

    fontname=“Helvetica”; 字体大小=13

    节点属性:

    “根”[color=“goldenrod4”、shape=“diamond”、style=“filled”]

    “g”[color=“lightsteelblue2”,shape=“diamond”,style=“filled”]

    “ga”[color=“darkorange”、shape=“diamond”、style=“filled”]

    “gaz”[color=“bisque4”、shape=“diamond”、style=“filled”]

    边缘属性:

    [箭头大小=0.4,笔宽=1.2]

    谢谢。twopi显然是有缺陷的。如果还有别的选择,我会同意的。有什么建议吗?嗯……我不会想到用twopi来绘制这种图形,但看过之后,我认为你的想法是对的。FWIW,对于类似于您的graph的东西,我的第一个想法是使用“circo”引擎(graphviz系列中也应包含在您的构建中)。我尝试了
    circo
    ,但对结果不满意。但是谢谢!我真正想要的是文本更大。你知道有什么办法吗?我应该能读懂它。唉。我试着让它工作了一段时间,断断续续,但我似乎无法让circo给我更大的文本…@isme,很高兴听到(我认为circo在最小化边缘交叉方面做得非常好,因为它在圆的周长上放置了尽可能多的节点)。没什么大不了的,但如果你想“+1”这个答案,它不会显示在我的报告或摘要中。