Graphviz, thay đổi kích thước của cạnh


90

Làm thế nào để thay đổi kích thước của cạnh trong dấu chấm (graphviz)? Tôi muốn làm cho một số cạnh được "tô đậm".

Câu trả lời:


132

Tôi muốn bổ sung câu trả lời của shuvalov. penwidth thực sự là lệnh chính xác. Thêm vào đó, trong câu trả lời của Shuvalov penwidthcả một nút và một tài sản cạnh - cũng đúng.

Sự khác biệt mà tôi muốn thực hiện:

  • penwidth , khi được sử dụng làm thuộc tính nút (ví dụ: "NodeA" [penwidth = 5]) ảnh hưởng đến trọng lượng đường viền cho nút đó

  • penwidth , khi được sử dụng như một tài sản cạnh ảnh hưởng đến trọng lượng dòng cạnh (giá trị mặc định là "1", nêu rõ penwidth = 2 sẽ làm cho cạnh xuất hiện trong đậm loại

  • nếu bạn muốn thay đổi trọng lượng dòng một cạnh, bạn không cần phải thay đổi penwidth cho hai nút nối với nhau bằng cạnh đó (như câu trả lời của shuvalev có thể đề nghị)

  • đối với biểu đồ có hướng (các cạnh có hướng), bạn cũng có thể muốn thay đổi kích thước / trọng lượng của đầu mũi tênđuôi mũi tên , cùng với trọng lượng cạnh , để cả ba vẫn tỷ lệ

  • các chiều dài của một cạnh có thể được thay đổi bằng cách thiết lập trọng lượng bất động sản, như ở những nơi khác, giá trị mặc định là 1.0; việc tăng giá trị đó làm tăng chi phí kéo dài cạnh này trong quá trình kết xuất (tức là, thuật toán vẽ áp dụng hình phạt cao hơn cho các giải pháp trong đó cạnh này dài hơn); chú ý rằng cạnh từ 1 đến 4 ngắn hơn cạnh từ 1 đến 2.

Đoạn mã sau đây sẽ minh họa tất cả điều này. Biểu đồ kết xuất được hiển thị bên dưới mã.

digraph {
    /* declare the node & style them */
    "Node 1" [shape=diamond, penwidth=3, style=filled, fillcolor="#FCD975"];
    "Node 2" [style=filled,fillcolor="#9ACEEB" ];
    "Node 3" [shape=diamond, style=filled, fillcolor="#FCD975" ];
    "Node 4" [style=filled, fillcolor="#9ACEEB" ]

    /* declare the edges & style them */
    "Node 1" -> "Node 2" [dir=none, weight=1, penwidth=3] ;
    "Node 1" -> "Node 3" [dir=none, color="#9ACEEB"] ;
    "Node 1" -> "Node 4" [arrowsize=.5, weight=2.]
}

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


Vì một số lý do weight tài sản không thay đổi gì đối với tôi. Phần còn lại là siêu hữu ích, mặc dù… cảm ơn!
clozach

Điều này rất hữu ích, đặc biệt là với hình ảnh - đã giúp tôi hiểu mối quan hệ ở đây. Cú pháp graphviz hơi đặc biệt, vì vậy những hình ảnh đẹp như vậy thực sự đã giúp ích rất nhiều. Phần duy nhất, nếu tôi thay đổi ở trên, sẽ là thêm một chút giải thích liên quan đến chiều rộng, bởi vì ngay bây giờ tất cả các dòng đều được in đậm (tôi đã thay đổi điều đó, nhờ vào phần trên), nhưng đường viền xung quanh các nút riêng lẻ không dày hơn, mà ban đầu tôi muốn làm. Cuối cùng tôi có thể giải quyết được vấn đề này, nhưng trong trường hợp tôi quên xuất bản giải pháp ở đây, tôi chỉ cần thêm giải pháp này để thay thế. :)
shevy

20

thử cái này:

"NodeA" [ penwidth = 5]
"NodeB" [ penwidth = 5]
NodeA->NodeB [ penwidth = 3]
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.