{{howhard>2}}
====== Datasets and Plots inside GroIMP ======
GroIMP comes with an included management of dataset and the ability to visualize them, in the following only a small introduction is given.
===== Datasets in RGG =====
A datasets in GroIMP are simple tables, that can be referenced from RGG and the GUI.
==== Getting data in ====
To create a Dataset in GroIMP the DataSetRef object is used as following:
DatasetRef diagram = new DatasetRef("plot");
In a dataset each row is described as a Dataseries and to add data a new series has to be added as following:
Dataseries ds = diagram.addRow();
Now we can add numeric data to the different columns of this series by using the set function:
ds.set(0,1.54);
ds.set(1,3);
for(int i=2; i<10; i++){
ds.set(i,i+i);
}
It is also possible to create a new row in a dataset in one line of code:
diagram.addRow().set(0,1).set(1,2);
==== Clearing ====
A dataset is a Resource of GroIMP and therefore not removed when the simulation is reset or recompiled. In order to clear a dataset the following command can be used.
diagram.clear();
==== Column titles ====
Similar to the set function it is possible to add column titles using the following command:
diagram.setColumnKey(0,"max(x)").setColumnKey(1,"max(y)").setColumnKey(2,"max(z)");
==== Exporting datasets ====
It is possible to export a dataset from RGG using a Java FileWriter as shown below:
import java.io.FileWriter;
public void getData(){
DatasetRef diagram = new DatasetRef("plot");
FileWriter fw = new FileWriter("/home/tim/test.csv");
diagram.export(fw);
fw.close();
}
It is also possible to define the Separator that is used for the file by e.g. ''diagram.export(fw,",");''
And the same works as well with a StringBuffer instead of the FileWriter.
===== Datasets in Gui =====
The datasets can be seen in the dataset explorer. This can be found in the main menu under Panels/Explorers/datasets. Clicking on a dataset opens a very simplistic table view where the data can be seen and also exported.
===== Visualizing Datasets =====
To visualize a dataset in GroIMP the chart() function is used:
chart(diagram, XY_PLOT);
in a full example like this:
module A(float len) extends Sphere(0.1)
{
{setShader(GREEN);}
}
DatasetRef diagram = new DatasetRef("plot");
protected void init ()
[
Axiom ==> A(1);
{
diagram.setTitle("My fancy plot");
diagram.clear();
diagram.setColumnKey(0,"max(x)").setColumnKey(1,"max(y)").setColumnKey(2,"max(z)");
chart(diagram, XY_PLOT);
}
]
public void run ()
[
A(x) ==> F(x) [RU(30) RH(90) A(x*0.8)] [RU(-30) RH(90) A(x*0.8)];
{
diagram.addRow().set(0,max(location((*A*)).x)).set(1,max(location((*A*)).y)).set(2,max(location((*A*)).z));
}
]