.txt 파일에 포함 된 정보를 기반으로 그래프를 생성하는 프로그램이 필요합니다. 예를 들어, 1,7, 7,6으로 작성된 경우 프로그램은 1, 7, 7 및 6 노드를 연결하는 그래프를 작성해야합니다. 처음에는 두 개의 배열/목록이 있어야한다고 생각합니다. 예를 들어, X 및 Y은 각각 .txt 파일에 주어진 쌍의 첫 번째와 두 번째 값을 포함합니다. 이 코드를 작성했지만 처리 할 수없는 다른 예외를 제공합니다. 여기있다 : 나는 올바른 방법에 나는 경우자바의 그래프 시각화
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class ReaddFile {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader((new FileReader("my/path/here")));
String line="";
List<Integer> list_x = new ArrayList<Integer>();
List<Integer> list_y = new ArrayList<Integer>();
while((line=br.readLine())!=null){
String[] t = line.split(",");
int x = Integer.parseInt(t[0]);
int y = Integer.parseInt(t[1]);
list_x.add(x);
list_y.add(y);
}
br.close();
}
}
, 위의 코드를 수정하고 나에게 계속하는 방법과 그래프를 그 목록으로 변환하는 방법에 대한 조언을 제공하는 데 도움이 바랍니다. 미리 감사드립니다!
P. JUNG API를 사용하여 그래프를 생성하는 코드를 작성했지만 문제점은 .txt 파일에서 읽어야 할 때 모든 노드와 에지 정보를 코드에 포함한다는 것입니다. 다음은 코드입니다.
import edu.uci.ics.jung.algorithms.layout.*;
import edu.uci.ics.jung.graph.Graph;
import edu.uci.ics.jung.graph.SparseMultigraph;
import edu.uci.ics.jung.visualization.VisualizationViewer;
import java.awt.*;
import javax.swing.JFrame;
public class GraphVis {
Graph<Integer, String> g;
public GraphVis() {
g = new SparseMultigraph<Integer, String>();
g.addVertex((Integer) 1);
g.addVertex((Integer) 2);
g.addVertex((Integer) 3);
g.addVertex((Integer) 4);
g.addVertex((Integer) 5);
g.addVertex((Integer) 6);
g.addVertex((Integer) 7);
g.addVertex((Integer) 8);
g.addVertex((Integer) 9);
g.addVertex((Integer) 10);
g.addVertex((Integer) 11);
g.addVertex((Integer) 12);
g.addVertex((Integer) 13);
g.addVertex((Integer) 14);
g.addEdge("1", 1,2);
g.addEdge("2", 2, 6);
g.addEdge("3", 2, 6);
g.addEdge("4", 2, 7);
g.addEdge("5", 2, 7);
g.addEdge("6", 2,12);
g.addEdge("7", 2,3);
g.addEdge("8", 2,3);
g.addEdge("9", 3,4);
g.addEdge("10", 3,4);
g.addEdge("11", 3,6);
g.addEdge("12", 3,6);
g.addEdge("13", 3,7);
g.addEdge("14", 3,7);
g.addEdge("15", 3,12);
g.addEdge("16", 4,5);
g.addEdge("17", 4,13);
g.addEdge("18", 4,13);
g.addEdge("19", 4,8);
g.addEdge("20", 4,12);
g.addEdge("21", 4,12);
g.addEdge("22", 4,7);
g.addEdge("23", 4,7);
g.addEdge("24", 4,6);
g.addEdge("25", 4,6);
g.addEdge("26", 5,12);
g.addEdge("27", 5,11);
g.addEdge("28", 5,11);
g.addEdge("29", 5,13);
g.addEdge("30", 5,8);
g.addEdge("31", 5,8);
g.addEdge("32", 5,9);
g.addEdge("33", 5,9);
g.addEdge("34", 5,9);
g.addEdge("35", 5,14);
g.addEdge("36", 5,14);
g.addEdge("37", 5,10);
g.addEdge("38", 5,10);
g.addEdge("39", 6,12);
g.addEdge("40", 6,12);
g.addEdge("41", 6,12);
g.addEdge("42", 6,7);
g.addEdge("43", 6,7);
}
public static void main(String[] args) {
GraphVis sgv = new GraphVis();
Layout<Integer, String> layout = new CircleLayout(sgv.g);
layout.setSize(new Dimension(600,600));
VisualizationViewer<Integer,String> vv = new
VisualizationViewer<Integer,String>(layout);
vv.setPreferredSize(new Dimension(750,750));
JFrame frame = new JFrame("Graph View ");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(vv);
frame.pack();
frame.setVisible(true);
}
답변 확인 : http://stackoverflow.com/questions/43507283/directed-graph-initialization/43508282#43508282 – sirandy
감사합니다. 출력을 시각화하고 그래프를 그릴 수있는 방법이 있습니까? –
출력은 App 클래스의 graph.printGraph() 호출과 함께 표시됩니다. 그래프의 출력 결과를 얻으려면 jGraphT (http://jgrapht.org/) 또는 jgraphx (https://github.com/jgraph/jgraphx)와 같은 라이브러리를 사용할 수 있으며 항상 어려운 방법입니다. 스윙 맨손. – sirandy