Monday, November 22, 2010

Using the plot tool from plugins



In addition to normal line plots, the plot tool features scatter plots, surface plots, and histograms. It can also to multiple plots. All of these features can be accessed from C++, C, Python, or Octave. Here is some code:

In C:
tc_matrix m = tc_plotData(i); //get data in ith plot window

tc_multiplot(2,1); //plot 2 graphs
tc_plot(m, "title"); //plot normal plot
tc_scatterplot(m, "title"); //scatterplot
tc_hist(m, "title"); //histogram
tc_surfacePlot(m, "title"); //3D plot - m must have 3

In Python:

m = tc_plotData(i); //get data in ith plot window
m2 = fromTC(m); //convert to python array

m = toTC(m2); //convert to tinkercell matrix
tc_multiplot(2,1); //plot 2 graphs
tc_plot(m, "title"); //plot normal plot
tc_scatterplot(m, "title"); //scatterplot
tc_hist(m, "title"); //histogram
tc_surfacePlot(m, "title"); //3D plot - m must have 3

In Octave:

m = tc_plotData(i); //get data in ith plot window
m2 = fromTC(m); //convert to octave matrix

//currently there is no way to convert to tinkercell matrix
//you will have to use tc_setMatrixValue to set each i,j-th
//value, i.e. write a double for-loop
tc_multiplot(2,1); //plot 2 graphs
tc_plot(m, "title"); //plot normal plot
tc_scatterplot(m, "title"); //scatterplot
tc_hist(m, "title"); //histogram
tc_surfacePlot(m, "title"); //3D plot - m must have 3

C++ (more code and more flexibility)
//get the plot tool
PlotTool * plot = static_cast (mainWindow->tool("plot"));

//get list of all plot windows inside the plot tool
QList<> plotWidgets = plot->plotWidgets();

//get the data from the i-th plot window
NumericalDataTable data = plotWidgets[0]->data();

//plot multiple graphs or plot on top of existing plot
plot->hold(true);
plot->overplot(true);

//plot data
plot->plot(data, "title");

//plot specific type of graph
int xaxis = 0; //index to use for x-axis

//specify plot type: Plot2D, SurfacePlot, HistogramPlot, ScatterPlot, BarPlot, Text

plot->data(data, "title", xaxis, PlotTool::BarPlot);



No comments: