Làm thế nào để vẽ đồ thị trực giao từ dữ liệu cạnh và đỉnh của nó?


7

Tôi đang viết một phần mềm và tôi cần biểu diễn một biểu đồ theo cách trực giao từ dữ liệu tôpô (vectơ các cạnh, đỉnh và dữ liệu kết nối của chúng)

Đồ thị bao gồm một tập hợp các đỉnh và một tập hợp các cạnh , mỗi cạnh nối hai đỉnh. Một đỉnh có thể có bất kỳ số cạnh nào được kết nối nên nó làm cho vấn đề phức tạp hơn rất nhiều.

Tôi đã đọc một số bài báo và có vẻ như mô hình Kandinsky là bài đăng phổ biến. Tuy nhiên tôi chỉ không biết thuật toán, bất kỳ giải pháp (thuật toán) nào khác giải quyết vấn đề cũng rất đáng hoan nghênh.


Đã thêm sau khi chỉnh sửa

Hình ảnh sau đây cho thấy một ví dụ thực tế cho một mạng điện nên được coi là dữ liệu thô, để tạo một biểu đồ từ mạng này, một số nhiệm vụ sơ bộ phải được thực hiện.

Dữ liệu đầu vào:

Dữ liệu đầu vào

Kết quả tôi đang tìm kiếm là một cái gì đó như dưới đây, có một số đặc điểm nếu bạn nhìn kỹ hơn nhiều:

Đa giác màu đỏ ở giữa hình trên (dữ liệu đầu vào) đại diện cho một trạm điện là một nút và có thể được kết nối với hơn 4 cạnh. Có nhiều đa giác màu đỏ hơn nhưng chỉ có một hình có thể phù hợp với hình trên, tuy nhiên như bạn có thể thấy, hình ảnh sau đây có thể bao phủ nhiều hơn một đa giác màu đỏ có nghĩa là nó có thể ánh xạ một khu vực lớn hơn, vì vậy hình ảnh sau dày đặc hơn nhiều.

Trong sơ đồ Sơ đồ, các đa giác màu đỏ (Các trạm con) thường duy trì vị trí của chúng tương đối với nhau vì vậy nếu chúng ta xoay sở để nhìn ra ngoài phạm vi của bản đồ trên bằng cách thu nhỏ, chúng ta gần như sẽ thấy một hình tam giác rõ ràng có thể nhìn thấy ở bên dưới trong khi có bên trái ở bên trái, bên dưới ở bên dưới ..... (đây không phải là quy tắc, nhưng tôi nghĩ rằng nó có thể là một khởi đầu cho thuật toán mong muốn)

Sơ đồ trực giao:

Sơ đồ trực giao


Có trực giao trong bối cảnh này có nghĩa là chỉ sử dụng các cạnh dọc và ngang? Bạn đang tìm kiếm một cách để đại diện cho hơn 4 cạnh gặp nhau tại một đỉnh?
trichoplax

@trichoplax Chính xác, và tôi đánh giá cao bất kỳ trợ giúp.
Iman

2
Là đồ thị được đảm bảo là mặt phẳng sao cho, quên các cạnh trực giao trong giây lát, đồ thị có thể được vẽ mà không có các cạnh chồng chéo?
Daniel M G Tàu

1
Các thuật toán bố trí đồ thị chung là anoying để lập trình và thực hiện. Thậm chí chỉ cần tìm những thứ phù hợp từ văn học là nỗi đau. Bạn nên mô tả thêm một chút những gì bạn mong đợi, vẽ một bức tranh.
joojaa

1
Các đỉnh đã có một vị trí nhất định trong 2D (hoặc trên một hình cầu), vì vậy đó có phải là vấn đề định tuyến cạnh không? Giải pháp tầm thường là định tuyến từng cạnh trước dọc theo x, sau đó dọc theo trục y (hoặc ngược lại 'vòng). Nếu điều này là đúng, giải thích các vấn đề với giải pháp tầm thường này có thể hữu ích. Tôi tưởng tượng một vấn đề tối thiểu hóa bằng cách chỉ định hình phạt cho các vấn đề ...
Daniel M Gessel

Câu trả lời:


-1

libCola

cola.js (còn gọi là WebCola) là một bản viết lại dựa trên JavaScript của libcola hoạt động tốt với D3.js

http://marvl.infotech.monash.edu/webcola/

Ví dụ về Bố cục Lưới:

http://marvl.infotech.monash.edu/webcola/examples/dotpowergraph.html

OGDF

Khung vẽ đồ thị mở

Có bố cục trực giao

Orthogonal: Ortholayout với các mô-đun cho các bước của hình dạng và đầm nén, ClusterOrthoLayout

http://www.ogdf.net/doku.php/ogdf:features

Kiểm tra các dự án sử dụng OGDF

http://www.ogdf.net/doku.php/project:external

Hola

Thuật toán bố trí trực giao giống con người

https://vimeo.com/150509722

Kieffer, Steve, Tim Dwyer, Kim Marriott và Michael Wybrow. "Hola: Bố cục mạng trực giao giống con người." Trực quan hóa và Đồ họa máy tính, Giao dịch của IEEE ngày 22, không. 1 (2016): 349-358.


Điều này nghe có vẻ hứa hẹn. Bạn có thể chỉnh sửa để thêm một số chi tiết về những gì nó cung cấp?
trichoplax

1
Nó cũng sẽ hữu ích khi có một cái nhìn tổng quan về cách mỗi thuật toán hoạt động, để chúng có thể được so sánh mà không cần phải để lại câu trả lời.
trichoplax
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.