2013-08-29 34 views

Trả lời

17

Như bạn đã phát hiện ra, graphviz không cho phép bạn chọn vị trí nhãn ngang, vì vậy tất cả các giải pháp hơi bị hack.

Cố gắng # 1: Hai giải pháp được đăng bởi marapet (here)

  1. Các labelangle và labeldistance lừa không thích nghi tốt với độ dài khác nhau của văn bản nhãn (bạn phải tính toán lại mới số khoảng cách/góc).

  2. Splines = false trick không hoạt động tốt khi số lượng cạnh giữa các nút> số lượng nút (bạn kết thúc với các cạnh chồng chéo).

Cố gắng # 2: xlabels và neo để tạo ra các cạnh cong

này sử dụng một tính năng tương đối mới của graphviz, xlabel (mà đặt nhãn SAU tọa độ cho các nút/cạnh đã được quyết định). Tính năng ports được sử dụng để tạo các cạnh cong. Phần đệm trên nhãn đạt được với các ký tự khoảng trắng.

gv

digraph { 
forcelabels=true; 

    0:sw -> 1:nw [ dir=forward, xlabel=" (1, 0) "]; 
    0 -> 1 [dir=none]; 
    1:ne -> 0:se [ dir=backward, xlabel= " (0, -1) "]; 

} 

Tôi tin rằng bạn cần phiên bản graphviz> 2,29 sử dụng xlabel.

+0

Trong phiên bản chấm của tôi (2.40), dường như không còn khả năng sử dụng khoảng trống để kiểm soát vị trí nhãn. – Nathaniel

+0

@Nathaniel, trong trường hợp nó giúp thử thêm/thêm một số ký tự gần như không nhìn thấy được, giống như dấu chấm ('.') hoặc một cái gì đó khác trong bảng Unicode. Điều này có thể sau đó đăng ký như một nhân vật công cụ bố trí sẽ sử dụng bao gồm cả không gian của bạn: 'xlabel =". Mytext "' hoặc 'xlabel =" mytext. "'. – xanderiel

Các vấn đề liên quan