前提・実現したいこと
JAVAのグラフ描画ツールJUNGを用いて,隣接行列を無向グラフを用いて,隣接行列の関係性を視覚化したい
発生している問題・エラーメッセージ
エラーメッセージ
Vertexの配列を作ってそれぞれに参照を代入,ノードを作成するということを行うところで,
for(int i = 0; i <names.length; i++) の部分について
型の不一致 boolean から Vertex に変換できません
というエラーメッセージが出ます.
該当のソースコード
ソースコード
package soukangyouretu;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import javax.swing.JFrame;
//(変更点,廃止)import edu.uci.ics.jung.graph.UndirectedSparseVertex;
import edu.uci.ics.jung.algorithms.layout.FRLayout;//(変更点)import edu.uci.ics.jung.visualization.FRLayout;
import edu.uci.ics.jung.algorithms.layout.Layout;//(変更点)import edu.uci.ics.jung.visualization.Layout;
import edu.uci.ics.jung.graph.Graph;
//(変更点,廃止)import edu.uci.ics.jung.graph.UndirectedSparseEdge;
import edu.uci.ics.jung.graph.UndirectedSparseGraph;//(変更点)import edu.uci.ics.jung.graph.impl.UndirectedSparseGraph;
//(変更点,廃止)import edu.uci.ics.jung.visualization.PluggableRenderer;
import edu.uci.ics.jung.visualization.VisualizationViewer;
public class soukangyouretu1 {
@SuppressWarnings("unchecked") public static void main(String[] args)throws NumberFormatException, IOException { JFrame window = new JFrame("RelationGraph"); //JEframeのインスタンスを作成(こういう書き方),グラフが表示されるページを作る final Graph graph = new UndirectedSparseGraph(); double threshold = 0.2; //閾値は0.2 // 表頭変数の配列 String[] names = null; // 相関行列 double[][] correlation = null; LineNumberReader in = new LineNumberReader( new InputStreamReader(new FileInputStream("\"C:\Users\ma-5\Downloads\icecream-chosa.xls\""), "MS932") ); String line; while((line = in.readLine()) != null) { // 1行目は表頭変数。ついでに列の数も数えて配列を作成する。 if(in.getLineNumber() == 1) { names = line.split("\t"); correlation = new double[names.length][names.length]; } // 2行目以降はn行目のデータを配列の[n-2]番目に入れる。 else { String[] t = line.split("\t"); double[] d = new double[names.length]; for(int i = in.getLineNumber() - 1; i <t.length; i++) { d[i] = Double.parseDouble(t[i]); } correlation[in.getLineNumber() - 2] = d; } } // Vertexの配列を作ってそれぞれに参照を代入//ノードを作成する Vertex [] vertices = new Vertex[names.length];//配列の長さがname for(int i = 0; i <names.length; i++) { vertices[i]=graph.addVertex(new UndirectedSparseVertex()); } // 閾値以上の相関係数を持っているVertex同士にEdgeを結ぶ//エッジを作成する for(int i = 0; i <correlation.length - 1; i++) { for(int j = i + 1; j <correlation[i].length; j++) { double current = correlation[i][j]; if(current >= threshold || current <= -threshold) { graph.addEdge(new UndirectedSparseEdge(),null); } } } //以降,描画のための処理 Layout layout = new FRLayout(graph); PluggableRenderer renderer = new PluggableRenderer(); VisualizationViewer viewer = new VisualizationViewer(layout); window.add(viewer); window.setSize(600, 600); window.setLocationRelativeTo(null); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.setVisible(true);
試したこと
変数定義など,誤っている点について,ご指摘の程.宜しくお願いします.
補足情報(FW/ツールのバージョンなど)
java Ecllipse IDE
JUNG2
あなたの回答
tips
プレビュー