グラフを書くならExcelのほうが早いし簡単ですよね?
学習目的か、なにか別の目的があるのかがわかったほうが回答しやすいです。
自力で描きたい場合は、こちらがわかりやすそうです。
棒グラフをプログラムで作ってみる – Yasushi Noguchi Class
手っ取り早く表示するなら、このライブラリが参考コードもあってわかりやすそうでした。
giCentre utilities — giCentre
適当にggっただけなので、他にもっといいものがあるかもしれません。
配列で詰まっておられるようなので、簡単にサンプルを作ってみました。
自力版
Processing
1void setup() {
2 background(255);
3 size(800, 400);
4 noLoop();
5
6 Table csvData = loadTable("2.csv", "header,csv");
7 int rowCount = csvData.getRowCount(); // ヘッダを除いた行数(データ件数)
8
9 // データ分の配列を作成
10 String[] names = new String[rowCount]; // 名前の配列
11 int[] heights = new int[rowCount]; // 身長の配列
12 int[] weights = new int[rowCount]; // 体重の配列
13 float[] bmis = new float[rowCount]; // BMIの配列
14
15 // データを配列に代入
16 for (int i = 0; i < rowCount; i++) {
17 names[i] = csvData.getString(i, "名前");
18 heights[i] = csvData.getInt(i, "身長");
19 weights[i] = csvData.getInt(i, "体重");
20 bmis[i] = weights[i] / ((heights[i] * 0.01) * (heights[i] * 0.01)); // 体重(kg) / (身長(m) * 身長(m))
21
22 println("名前:" + names[i] + " 身長:" + heights[i] + "cm 体重:" + weights[i] + "kg BMI:" + bmis[i]);
23 }
24
25 // 表の表示
26 fill(0);
27 for (int i = 0; i < rowCount; i++) {
28 int y = 20 + i * 20;
29 text(names[i], 10, y);
30 text(heights[i], 50, y);
31 text(weights[i], 90, y);
32 text(bmis[i], 130, y);
33 }
34
35 // グラフ背景の表示
36 int scale = 10; // 数字が小さいので引き延ばす倍率
37 fill(250, 100, 100); // 肥満の色
38 rect(180, 0, 40 * scale, rowCount * 23);
39
40 fill(250, 250, 200); // 普通の色
41 rect(180, 0, 25 * scale, rowCount * 23);
42
43 fill(170, 250, 250); // 痩せの色
44 rect(180, 0, 18.5 * scale, rowCount * 23);
45
46 // グラフの表示
47 fill(127);
48 for (int i = 0; i < rowCount; i++) {
49 int y = 5 + i * 22;
50 rect(180, y, bmis[i] * scale, 15);
51 }
52}
ライブラリ版
Processing
1import org.gicentre.utils.stat.*; // グラフライブラリを使えるようにする
2
3// 各関数(setupとdraw)で使えるようにBarChart型の変数を宣言
4BarChart barChart;
5
6void setup()
7{
8 size(800, 400);
9
10 Table csvData = loadTable("2.csv", "header,csv");
11 int rowCount = csvData.getRowCount(); // ヘッダを除いた行数(データ件数)
12
13 // データ分の配列を作成
14 String[] names = new String[rowCount]; // 名前の配列
15 int[] heights = new int[rowCount]; // 身長の配列
16 int[] weights = new int[rowCount]; // 体重の配列
17 float[] bmis = new float[rowCount]; // BMIの配列
18
19 // データを配列に代入
20 for (int i = 0; i < rowCount; i++) {
21 names[i] = csvData.getString(i, "名前");
22 heights[i] = csvData.getInt(i, "身長");
23 weights[i] = csvData.getInt(i, "体重");
24 bmis[i] = weights[i] / ((heights[i] * 0.01) * (heights[i] * 0.01)); // 体重(kg) / (身長(m) * 身長(m))
25
26 println("名前:" + names[i] + " 身長:" + heights[i] + "cm 体重:" + weights[i] + "kg BMI:" + bmis[i]);
27 }
28
29 // BarChartの作成・データをセット
30 barChart = new BarChart(this);
31 barChart.setData(bmis);
32 barChart.setBarLabels(names);
33
34 // 最大値・最小値の設定
35 barChart.setMinValue(0);
36 barChart.setMaxValue(40);
37
38 // 色の設定
39 barChart.setAxisColour(0);
40 barChart.setAxisLabelColour(0);
41 barChart.setAxisValuesColour(0);
42
43 // 軸の表示
44 barChart.showValueAxis(true);
45 barChart.showCategoryAxis(true);
46}
47
48void draw()
49{
50 background(255);
51
52 // 表示範囲を決めグラフの表示
53 barChart.draw(15, 15, width - 30, height - 30);
54 noLoop();
55}
2.csv
csv
1名前,身長,体重
2Aさん,182,80
3Bさん,167,48
4Cさん,170,98