Processing:Примеры/Загрузка и сохранение табличных данных
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Содержание | Среда разработки Processing | Справочник языка Processing | Библиотеки | Примеры | Режимы программирования |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Описание[1]
Этот скетч-пример демонстрирует, как использовать метод loadTable() для считывания данных из CSV-файла, а затем делать из этих данных графические объекты.
Сам CSV-файл выглядит следующим образом: x,y,diameter,name 160,103,43.19838,Happy 372,137,52.42526,Sad 273,235,61.14072,Joyous 121,179,44.758068,Melancholy
Пример
// массив объектов «Bubble»:
Bubble[] bubbles;
// объект Table (таблица):
Table table;
void setup() {
size(640, 360);
loadData();
}
void draw() {
background(255);
// показываем все пузыри:
for (Bubble b : bubbles) {
b.display();
b.rollover(mouseX, mouseY);
}
textAlign(LEFT);
fill(0);
text("Click to add bubbles.", 10, height-10);
// "Кликните, чтобы нарисовать пузырь"
}
void loadData() {
// загружаем CSV-файл в объект Table;
// опциональный параметр "header" говорит,
// что у файла есть ряд с заголовками:
table = loadTable("data.csv", "header");
// размер массива объектов «Bubble» определяется
// общим количеством рядов в CSV-файле:
bubbles = new Bubble[table.getRowCount()];
// проходим через все ряды в таблице:
int rowCount = 0;
for (TableRow row : table.rows()) {
// доступ к полям можно получить
// при помощи названий столбцов (или индекса):
float x = row.getFloat("x");
float y = row.getFloat("y");
float d = row.getFloat("diameter");
String n = row.getString("name");
// делаем объект «Bubble» на основе считанных данных:
bubbles[rowCount] = new Bubble(x, y, d, n);
rowCount++;
}
}
void mousePressed() {
// создаем новый ряд:
TableRow row = table.addRow();
// задаем значения из этого ряда:
row.setFloat("x", mouseX);
row.setFloat("y", mouseY);
row.setFloat("diameter", random(40, 80));
row.setString("name", "Blah");
// если в таблице более 10 рядов...
if (table.getRowCount() > 10) {
// ...удаляем самый старый ряд:
table.removeRow(0);
}
// записываем эти данные обратно в тот же CSV-файл...
saveTable(table, "data/data.csv");
// ...и снова загружаем данные из него:
loadData();
}
// класс «Bubble»
class Bubble {
float x,y;
float diameter;
String name;
boolean over = false;
// создание объекта «Bubble»:
Bubble(float x_, float y_, float diameter_, String s) {
x = x_;
y = y_;
diameter = diameter_;
name = s;
}
// проверяем, находится ли курсор над объектом «Bubble»:
void rollover(float px, float py) {
float d = dist(px,py,x,y);
if (d < diameter/2) {
over = true;
} else {
over = false;
}
}
// показываем пузырь:
void display() {
stroke(0);
strokeWeight(2);
noFill();
ellipse(x,y,diameter,diameter);
if (over) {
fill(0);
textAlign(CENTER);
text(name,x,y+diameter/2+20);
}
}
}
См.также
Внешние ссылки
Примеры на Processing | |
---|---|
Основы |
|
Продвинутые графические эффекты |
|
Примеры из сторонних библиотек |