User Tools

Site Tools


tutorials:plotting-data

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));
 
	}	
]
tutorials/plotting-data.txt · Last modified: 2024/09/27 17:30 by tim