ProcessingでCSVファイルを読み込む方法


大卒初任給の値を可視化

ProcessingでCSVファイルを読み込む方法を調べました。

とりあえず、ネットで検索して見つけたサイトがこちらです。コピペしてProcessing上で実行するとたしかにCSVの値が出力されました。

ただ、void draw()でグラフィックを書き出す場合はそのままコピペしてもエラーが出てうまく動きませんでした。
その解決策は下の文をvoid setup()の中に書くということでした。

int csvWidth=0;
 String lines[] = loadStrings("fee.csv");
//calculate max width of csv file
 for (int i=0; i < lines.length; i++) { String [] chars=split(lines[i],','); if (chars.length>csvWidth){
 csvWidth=chars.length;
 }
 }
//create csv array based on # of rows and columns in csv file
 csv = new String [lines.length][csvWidth];
 LENGTH =lines.length; //
 println(LENGTH);
 //parse values into 2d array
 for (int i=0; i < lines.length; i++) {
 String [] temp = new String [lines.length];
 temp= split(lines[i], ',');
 for (int j=0; j < temp.length; j++){
 csv[i][j]=temp[j];
 }
 }

ただし、下のCSVを定義する2次元配列とCSVの行数を格納する変数をvoid setup()の外に書かないと動きません。

int LENGTH;
 String [][] csv;

void draw()の中でCSVの値を取り出すには、以下のようにしてfor文を回せばOKです。

for(int i=1; i< LENGTH; i++){ // LENGTH は void setup()中で lines.lengthの値を代入されている
  value =Float.parseFloat(csv[i][1]) ;//String型のCSVの値をFloat型にキャスト
  noStroke();
  fill(256,256,0);
  ellipse(x,y,value,value);//CSVの値を半径とした円を書く
}

この記事の上部の画像は総務省 統計局のサイトで公開されている大卒者の初任給の額をインフォグラフィックにしたものです。なかなか面白い!

atnr.net の RSS登録はこちらから

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です