Ngôn ngữ đồ thị dấu chấm - làm thế nào để tạo các cạnh hai chiều tự động?


81

Đây là một ví dụ rất đơn giản về biểu đồ Dot của tôi:

strict digraph graphName {
A->B
B->A
}

Điều này tạo ra văn bản thay thế

Thay vào đó, tôi muốn một cạnh duy nhất được hiển thị giữa A và B nhưng với đầu mũi tên kép. Tôi biết cách lấy đầu mũi tên kép làm tùy chọn chung:

strict digraph graphName {
  edge [dir="both"]
A->B
B->A
}

Nhưng điều đó trông rất xấu, và không phải tất cả các cạnh của tôi đều phải có hai đầu.

văn bản thay thế

Nếu tôi xử lý nhiều hơn biểu đồ và tự phát hiện tham chiếu kép và thay thế hai cạnh bằng một cạnh, thì có vẻ ổn. Nhưng tôi không muốn phải làm thêm bước này

strict digraph graphName {
A->B [dir="both"]
}

văn bản thay thế

Bất kỳ giải pháp tốt hơn?

Câu trả lời:


65

Còn về 'focus = true' thì sao ?:

strict digraph graphName {
concentrate=true
A->B
B->A
}

với sự tập trung = true

Từ tài liệu :

Nếu đúng, hãy sử dụng bộ tập trung cạnh. Điều này hợp nhất các đa số thành một cạnh duy nhất và khiến các cạnh song song một phần chia sẻ một phần đường dẫn của chúng. Tính năng thứ hai vẫn chưa có sẵn bên ngoài dấu chấm.


Hoạt động với một nhãn cho tôi và tôi đang chạy phiên bản cũ hơn.
Aaron Hall

1
Nếu nó có ích ... điều này không hiệu quả với tôi, vì nó kết hợp các cạnh lại, nhưng chỉ đặt một mũi tên duy nhất ở cuối. Sau đó, tôi cố gắng "digraph nghiêm ngặt" ... và nó hoạt động hoàn hảo sau đó.
philw

Điều này thật ngớ ngẩn nhưng đó là những gì OP muốn, rất lớn!
Dan Rosenstark

@philw Nó cũng không hoạt động với tôi, tôi nhận được các cạnh chỉ với một đầu mũi tên duy nhất. Tôi đang sử dụng pygraphviz, và tôi đã thử pgv.AGraph(directed=True, strict=True), nhưng nó cũng không hoạt động, tôi lại nhận được hai cạnh ... Bất kỳ đề xuất nào?
Tropilio

101

Bạn chỉ nên sử dụng:

A -> B [dir=both]

4
Điều này đã giúp tôi tiết kiệm một số dòng thừa và tôi đang sử dụng nó cũng như câu trả lời hàng đầu khi thích hợp.
Aaron Hall

2
Bạn không cần dấu ngoặc kép quanh "cả hai"
Yetti99

@NoahSussman Nó không thể là câu trả lời được chấp nhận bởi vì nó không thực sự trả lời câu hỏi;)
Dan Rosenstark
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.