【Illustrator JavaScript】CSVファイルを読み込んで散布図を描く
Adobe Illustrator をデータ可視化ツールとして使えないか、いろいろと検討しています。
これらの記事の 2D かつ Illustrator 版です。
今回もCSVファイルを読み込んで、散布図を描いてみようと思います。
1. CSV ファイルを用意する
今回も以前と同様、統計解析ソフト R に入っている iris データを CSV 出力したものを使います。
2. コード
// 新規ドキュメント作成
app.documents.add()
// mmからpointに変換するための値
var mm = 2.834645;
// 枠線の色は無し
var noColor = new NoColor();
// 塗り潰しの色の設定
var fillColorRed = new RGBColor();
fillColorRed.red = 255;
fillColorRed.green = 0;
fillColorRed.blue = 0;
var fillColorGreen = new RGBColor();
fillColorGreen.red = 0;
fillColorGreen.green = 255;
fillColorGreen.blue = 0;
var fillColorBlue = new RGBColor();
fillColorBlue.red = 0;
fillColorBlue.green = 0;
fillColorBlue.blue = 255;
// CSV ファイル読込
var file = new File("C:\\Users\\mare_ism\\Documents\\iris.csv");
file.encoding = "UTF-8";
file.open("r", "TEXT");
var text = file.read();
var textRow = text.split("\n");
var columns = textRow.shift().split(",");
// 横軸に Sepal.Length 、縦軸に Sepal.Width を設定して散布図の描画
for (var i = 0; i < textRow.length; i++) {
if (textRow[i].length != 0) {
var rowItems = textRow[i].split(",");
circle = app.activeDocument.pathItems.ellipse(
parseFloat(rowItems[0]) * 30 * mm, parseFloat(rowItems[1]) * 30 * mm,
2 * mm, 2 * mm);
circle.strokeColor = noColor;
// 品種ごとに色分け
if (rowItems[4] == "\"setosa\"") {
circle.fillColor = fillColorRed;
} else if (rowItems[4] == "\"versicolor\"") {
circle.fillColor = fillColorGreen;
} else if (rowItems[4] == "\"virginica\"") {
circle.fillColor = fillColorBlue;
}
}
}
コードのポイント
iris.csv 内では文字列がダブルクォートで囲まれています。
スクリプト内であやめの種類別に色を変えるところで条件判定をしているのですが、ダブルクォートを含んだ文字列として比較しています。
3. 実行
上記 JavaScript ファイルを Visual Studio Code で開き、Ctrl + Shift + p で Adobe Script Runner Extension を呼び出します。
入力窓に「Adobe illustrator」と入力し、Enter キーを押すと Illustrator が起動します。
4. 実行結果
新規ドキュメントに色分けした散布図の描画ができました。
あとは軸などを追加すれば良いですね。
まとめ
JavaScript を使って CSV を読み込み、Adobe Illustrator の新規ドキュメントに散布図を描いてみました。
描画の位置や色などを CSV のデータを使って制御できるので、いろいろな使い方ができそうですね。
この記事が気に入ったらサポートをしてみませんか?