使用Graphviz时显示与边缘对齐的标签


91

我正在使用Graphviz 2.30。标签的水平定位可行,但在某些情况下,可能需要更改角度。

例如,我在这里尝试了各种角度值,但没有任何效果:

ABB -> ABACUS[label="applied", fontname="Arial", fontsize=15, labelangle=110];

使用Graphviz时,如何显示与边缘对齐(即平行于边缘)的标签digraph

digraph由于NDA ,整个内容都不会发布。此外,旋转将仅应用于少数标签。

我看过类似的线程像这样另一个(或约例如对齐线),但没有关于我的问题的任何帮助。


2
“ labelangle”仅适用于headlabel和taillabel,此外,它不会旋转标签,而仅(与labeldistance一起)定义放置标签的位置(仍为水平线)。角度0从沿边缘的起点/终点开始。使用角度+/-,可以在边缘上方或下方打印标签。距离为0时,角度无效。我也非常想让标签旋转以跟随边缘,而afaik仍然无法解决。
bug313 2014年

1
我感觉到没有办法做到这一点。但是,由于缺乏功能的记录很少(这将导致大量的文档记录),因此很难对此发表权威性的答案。除非您可以指出,在整个文档中,或者在代码库的任何晦涩之处,都没有提到这样的内容。
bigblind 2014年

1
定位期间,Graphviz中的文本元素都以常规框为边界。该算法尽力避免在边缘放置期间越过这些框的边界。如果标签可以旋转,则这些盒子将变得更大,从而在显示区域上产生巨大压力。如果标签可以与边缘或节点重叠,则可以稍后在成像管道中旋转标签。
Pekka

1
实际上,您可以在文档中找到它:github.com/ellson/graphviz/blob/master/doc/internal_todo.html “?-允许倾斜文本”
MK。

Answers:


5

使用dot2latex可以指定lblstyle属性。的值lblstylePGF / TikZ使用在pdf生成中。

可以这样指定并行标签:

digraph G {
    edge [lblstyle="above, sloped"];
    a -> b [label="ab"];
    b -> c [label="bc"];
    c -> a [label="ca"];
}

生成PDF

$ dot2tex --tikzedgelabel file.dot > file.tex
$ pdflatex file.tex

结果是

在此处输入图片说明


不幸的是,生成图形时,您必须知道所有标签的角度。OP希望以与边缘平行的任何角度显示其标签,使其与边缘平行。
Galax

1
@Galax感谢您的评论。我确定了答案。
malbarbo'7

很棒的发现-这是的方便功能dot,我之前没有注意到(或者它是新的)。
Galax

-1

编辑:另一个答案找到了一个选项,该选项现在可以使文本与边缘对齐。

最好的选择可能是将图形导出为SVG并使用IllustratorInkscape对其进行微调。这仅在生成一些图形时才实用。

我经常不得不调整输出 GraphvizGephi; 他们给我一个很好的起点。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.