>  기사  >  Java  >  그래프 시각화

그래프 시각화

PHPz
PHPz원래의
2024-08-10 07:09:38256검색

그래프를 시각적으로 표시하려면 각 꼭지점에 위치를 할당해야 합니다. 이전 섹션에서는 Graph 인터페이스, AbstractGraph 클래스, UnweightedGraph 클래스를 사용하여 그래프를 모델링하는 방법을 소개했습니다. 이 섹션에서는 그래프를 그래픽으로 표시하는 방법에 대해 설명합니다. 그래프를 표시하기 위해서는 각 정점이 표시되는 위치와 각 정점의 이름을 알아야 합니다. 그래프가 표시될 수 있도록 x-y- 좌표와 이름을 가져오는 메서드가 있는 Displayable이라는 인터페이스를 정의합니다. 아래 코드에서 Displayable의 정점 인스턴스를 만듭니다.

Graph Visualization

이제 아래 코드와 같이 표시 가능한 정점이 있는 그래프를 GraphView라는 창에 표시할 수 있습니다.

Graph Visualization

창에 그래프를 표시하려면 생성자(9행)에서 그래프를 인수로 전달하여 GraphView 인스턴스를 생성하면 됩니다. 그래프의 정점에 대한 클래스는 정점을 표시하기 위해 Displayable 인터페이스를 구현해야 합니다(13~22행). 각 정점 인덱스 i에 대해 graph.getNeighbors(i)를 호출하면 인접 목록(26행)이 반환됩니다. 이 목록에서 i에 인접한 모든 정점을 찾고 i를 인접한 정점(27~34행)과 연결하는 선을 그릴 수 있습니다.

Graph Visualization

아래 코드는 위 그림의 그래프를 아래 그림과 같이 표시한 예입니다.

Graph Visualization

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class DisplayUSMap extends Application {
    @Override // Override the start method in the Application class
    public void start(Stage primaryStage) {
        City[] vertices = {new City("Seattle", 75, 50),
                new City("San Francisco", 50, 210),
                new City("Los Angeles", 75, 275), new City("Denver", 275, 175),
                new City("Kansas City", 400, 245),
                new City("Chicago", 450, 100), new City("Boston", 700, 80),
                new City("New York", 675, 120), new City("Atlanta", 575, 295),
                new City("Miami", 600, 400), new City("Dallas", 408, 325),
                new City("Houston", 450, 360)};

        // Edge array for graph
        int[][] edges = {
                {0, 1}, {0, 3}, {0, 5}, {1, 0}, {1, 2}, {1, 3},
                {2, 1}, {2, 3}, {2, 4}, {2, 10},
                {3, 0}, {3, 1}, {3, 2}, {3, 4}, {3, 5},
                {4, 2}, {4, 3}, {4, 5}, {4, 7}, {4, 8}, {4, 10},
                {5, 0}, {5, 3}, {5, 4}, {5, 6}, {5, 7},
                {6, 5}, {6, 7}, {7, 4}, {7, 5}, {7, 6}, {7, 8},
                {8, 4}, {8, 7}, {8, 9}, {8, 10}, {8, 11},
                {9, 8}, {9, 11}, {10, 2}, {10, 4}, {10, 8}, {10, 11},
                {11, 8}, {11, 9}, {11, 10}
        };

        Graph<City> graph = new UnweightedGraph<>(vertices, edges);

        // Create a scene and place it in the stage
        Scene scene = new Scene(new GraphView(graph), 750, 450);
        primaryStage.setTitle("DisplayUSMap"); // Set the stage title
        primaryStage.setScene(scene); // Place the scene in the stage
        primaryStage.show(); // Display the stage
    }

    public static void main(String[] args) {
        Application.launch(args);
    }

    static class City implements Displayable {
        private int x, y;
        private String name;

        City(String name, int x, int y) {
            this.name = name;
            this.x = x;
            this.y = y;
        }

        @Override
        public int getX() {
            return x;
        }

        @Override
        public int getY() {
            return y;
        }

        @Override
        public String getName() {
            return name;
        }
    }
}

City 클래스는 좌표와 이름을 사용하여 정점을 모델링하도록 정의됩니다(39~63행). 프로그램은 City 유형의 꼭짓점을 사용하여 그래프를 생성합니다(30행). CityDisplayable을 구현하므로 그래프용으로 생성된 GraphView 객체는 그래프를 창(33행)에 표시합니다.

위 내용은 그래프 시각화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:그래프 모델링다음 기사:그래프 모델링