Hiển thị nhãn thẳng hàng với cạnh khi sử dụng Graphviz


91

Tôi đang sử dụng Graphviz 2.30. Định vị theo chiều ngang cho các nhãn hiệu quả, nhưng trong một số trường hợp, một góc được sửa đổi sẽ được mong muốn.

Ví dụ: tôi đã thử các giá trị khác nhau cho góc ở đây nhưng không có tác dụng:

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

Làm cách nào để hiển thị các nhãn thẳng hàng với (tức là song song với) cạnh khi sử dụng Graphviz digraph.

Toàn bộ digraphsẽ không được đăng do một NDA. Ngoài ra, việc xoay vòng sẽ chỉ được áp dụng cho một số nhãn.

Tôi đã đọc các chủ đề tương tự như thế này hoặc chủ đề khác (hoặc một chủ đề về căn chỉnh chẳng hạn) nhưng không có bất kỳ trợ giúp nào về vấn đề của tôi.


2
'labelangle' chỉ hoạt động với nhãn đầu và nhãn hậu, hơn nữa nó không xoay nhãn, mà chỉ xác định (cùng với labeldistance) nơi đặt nhãn (vẫn là một đường ngang). Góc 0 là đi từ điểm đầu / cuối dọc theo cạnh. Với góc + / - nhãn có thể được in ở trên hoặc dưới mép. Với khoảng cách 0, góc là không ảnh hưởng. Tôi cũng sẽ rất quan tâm đến việc các nhãn được xoay theo các cạnh, điều mà afaik vẫn chưa được giải quyết.
bug313,

1
Tôi có cảm giác rằng không có cách nào để làm điều này. Nhưng vì sự vắng mặt của các tính năng hiếm khi được ghi lại (nó sẽ dẫn đến vô số tài liệu), thật khó để viết một câu trả lời có thẩm quyền về điều này. Trừ khi bạn có thể chỉ ra rằng không có bất kỳ đề cập nào về điều này trong toàn bộ tài liệu, cũng như trong bất kỳ góc khuất nào của cơ sở mã.
bigblind

1
Các phần tử văn bản trong Graphviz đều được bao quanh bằng một hộp thông thường trong quá trình định vị. Thuật toán thực sự cố gắng tránh vượt qua các ranh giới hộp này trong quá trình đặt cạnh. Nếu một nhãn có thể được xoay, các hộp này sẽ trở nên lớn hơn nhiều, dẫn đến áp lực đáng kể lên khu vực hiển thị. Nếu các nhãn có thể chồng lên các cạnh hoặc nút, thì chúng có thể được xoay sau đó trong đường dẫn hình ảnh.
Pekka

1
thực sự bạn có thể tìm thấy nó trong tài liệu: github.com/ellson/graphviz/blob/master/doc/internal_todo.html "? - Cho phép văn bản ở một góc"
MK.

Câu trả lời:


5

Sử dụng dot2latex cho phép bạn chỉ định lblstylethuộc tính. Giá trị của lblstyleđược PGF / TikZ sử dụng trong tạo pdf.

Người ta có thể chỉ định các nhãn song song như thế này:

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

Để tạo pdf

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

Kết quả là

nhập mô tả hình ảnh ở đây


Thật không may, bạn sẽ phải biết các góc của tất cả các nhãn khi tạo biểu đồ; OP muốn hiển thị nhãn của chúng song song với cạnh, ở bất kỳ góc nào mà cạnh đó xảy ra.
Galax

1
@Galax Cảm ơn bạn đã bình luận. Tôi đã sửa câu trả lời.
malbarbo

Tìm thấy tuyệt vời- đó là một tính năng tiện dụng dot, tôi đã không nhận thấy nó trước đây (hoặc có thể nó mới).
Galax

-1

Chỉnh sửa: một câu trả lời khác đã tìm thấy một tùy chọn hiện đã tồn tại để căn chỉnh văn bản với các cạnh.

Tùy chọn tốt nhất của bạn có thể là xuất biểu đồ dưới dạng biểu đồ SVGvà sử dụng Illustratorhoặc Inkscapetinh chỉnh nó. Điều này chỉ thực tế khi tạo ra một vài đồ thị.

Tôi thường xuyên phải điều chỉnh đầu ra từ GraphvizGephi; họ cho tôi một điểm khởi đầu tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.