{{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)); } ]