mirror of
https://github.com/processing/processing4.git
synced 2026-01-29 03:11:08 +01:00
new Table example
This commit is contained in:
40
java/examples/Topics/Advanced Data/LoadSaveTable/Bubble.pde
Normal file
40
java/examples/Topics/Advanced Data/LoadSaveTable/Bubble.pde
Normal file
@@ -0,0 +1,40 @@
|
||||
// A Bubble class
|
||||
|
||||
class Bubble {
|
||||
float x,y;
|
||||
float diameter;
|
||||
String name;
|
||||
|
||||
boolean over = false;
|
||||
|
||||
// Create the Bubble
|
||||
Bubble(float x_, float y_, float diameter_, String s) {
|
||||
x = x_;
|
||||
y = y_;
|
||||
diameter = diameter_;
|
||||
name = s;
|
||||
}
|
||||
|
||||
// CHecking if mouse is over the Bubble
|
||||
void rollover(float px, float py) {
|
||||
float d = dist(px,py,x,y);
|
||||
if (d < diameter/2) {
|
||||
over = true;
|
||||
} else {
|
||||
over = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Display the Bubble
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
/**
|
||||
* Loading Tabular Data
|
||||
* by Daniel Shiffman.
|
||||
*
|
||||
* This example demonstrates how to use loadTable()
|
||||
* to retrieve data from a CSV file and make objects
|
||||
* from that data.
|
||||
*
|
||||
* Here is what the CSV looks like:
|
||||
*
|
||||
x,y,diameter,name
|
||||
160,103,43.19838,Happy
|
||||
372,137,52.42526,Sad
|
||||
273,235,61.14072,Joyous
|
||||
121,179,44.758068,Melancholy
|
||||
*/
|
||||
|
||||
// An Array of Bubble objects
|
||||
Bubble[] bubbles;
|
||||
// A Table object
|
||||
Table table;
|
||||
|
||||
void setup() {
|
||||
size(640, 360);
|
||||
loadData();
|
||||
}
|
||||
|
||||
void draw() {
|
||||
background(255);
|
||||
// Display all bubbles
|
||||
for (Bubble b : bubbles) {
|
||||
b.display();
|
||||
b.rollover(mouseX, mouseY);
|
||||
}
|
||||
|
||||
textAlign(LEFT);
|
||||
fill(0);
|
||||
text("Click to add bubbles.", 10, height-10);
|
||||
}
|
||||
|
||||
void loadData() {
|
||||
// Load CSV file into a Table object
|
||||
// "header" option indicates the file has a header row
|
||||
table = loadTable("data.csv","header");
|
||||
|
||||
// The size of the array of Bubble objects is determined by the total number of rows in the CSV
|
||||
bubbles = new Bubble[table.getRowCount()];
|
||||
|
||||
// You can access iterate over all the rows in a table
|
||||
int rowCount = 0;
|
||||
for (TableRow row : table.rows()) {
|
||||
// You can access the fields via their column name (or index)
|
||||
float x = row.getFloat("x");
|
||||
float y = row.getFloat("y");
|
||||
float d = row.getFloat("diameter");
|
||||
String n = row.getString("name");
|
||||
// Make a Bubble object out of the data read
|
||||
bubbles[rowCount] = new Bubble(x, y, d, n);
|
||||
rowCount++;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void mousePressed() {
|
||||
// Create a new row
|
||||
TableRow row = table.addRow();
|
||||
// Set the values of that row
|
||||
row.setFloat("x", mouseX);
|
||||
row.setFloat("y", mouseY);
|
||||
row.setFloat("diameter", random(40, 80));
|
||||
row.setString("name", "Blah");
|
||||
|
||||
// Writing the CSV back to the same file
|
||||
saveTable(table,"data/data.csv");
|
||||
// And reloading it
|
||||
loadData();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
x,y,diameter,name
|
||||
160,103,43.19838,Happy
|
||||
372,137,52.42526,Sad
|
||||
273,235,61.14072,Joyous
|
||||
121,179,44.758068,Melancholy
|
||||
|
@@ -1,9 +1,3 @@
|
||||
// Learning Processing
|
||||
// Daniel Shiffman
|
||||
// http://www.learningprocessing.com
|
||||
|
||||
// Example 18-9: Using Processing's XML library
|
||||
|
||||
// A Bubble class
|
||||
class Bubble {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user