use of org.jfree.data.xy.XYSeriesCollection in project gephi by gephi.
the class ChartsUtils method regress.
/********Private methods*********/
/**
* Calculates linear regression points from a XYSeriesCollection data set
* Code obtained from http://pwnt.be/2009/08/17/simple-linear-regression-with-jfreechart
*/
private static XYDataset regress(XYSeriesCollection data) {
// Determine bounds
double xMin = Double.MAX_VALUE, xMax = 0;
for (int i = 0; i < data.getSeriesCount(); i++) {
XYSeries ser = data.getSeries(i);
for (int j = 0; j < ser.getItemCount(); j++) {
double x = ser.getX(j).doubleValue();
if (x < xMin) {
xMin = x;
}
if (x > xMax) {
xMax = x;
}
}
}
// Create 2-point series for each of the original series
XYSeriesCollection coll = new XYSeriesCollection();
for (int i = 0; i < data.getSeriesCount(); i++) {
XYSeries ser = data.getSeries(i);
int n = ser.getItemCount();
double sx = 0, sy = 0, sxx = 0, sxy = 0, syy = 0;
for (int j = 0; j < n; j++) {
double x = ser.getX(j).doubleValue();
double y = ser.getY(j).doubleValue();
sx += x;
sy += y;
sxx += x * x;
sxy += x * y;
syy += y * y;
}
double b = (n * sxy - sx * sy) / (n * sxx - sx * sx);
double a = sy / n - b * sx / n;
XYSeries regr = new XYSeries(ser.getKey());
regr.add(xMin, a + b * xMin);
regr.add(xMax, a + b * xMax);
coll.addSeries(regr);
}
return coll;
}
use of org.jfree.data.xy.XYSeriesCollection in project gephi by gephi.
the class Degree method getReport.
/**
*
* @return
*/
@Override
public String getReport() {
String report = "";
if (isDirected) {
report = getDirectedReport();
} else {
//Distribution series
XYSeries dSeries = ChartUtils.createXYSeries(degreeDist, "Degree Distribution");
XYSeriesCollection dataset1 = new XYSeriesCollection();
dataset1.addSeries(dSeries);
JFreeChart chart1 = ChartFactory.createXYLineChart("Degree Distribution", "Value", "Count", dataset1, PlotOrientation.VERTICAL, true, false, false);
chart1.removeLegend();
ChartUtils.decorateChart(chart1);
ChartUtils.scaleChart(chart1, dSeries, false);
String degreeImageFile = ChartUtils.renderChart(chart1, "degree-distribution.png");
NumberFormat f = new DecimalFormat("#0.000");
report = "<HTML> <BODY> <h1>Degree Report </h1> " + "<hr>" + "<br> <h2> Results: </h2>" + "Average Degree: " + f.format(avgDegree) + "<br /><br />" + degreeImageFile + "</BODY></HTML>";
}
return report;
}
use of org.jfree.data.xy.XYSeriesCollection in project gephi by gephi.
the class Degree method getDirectedReport.
public String getDirectedReport() {
//Distribution series
XYSeries dSeries = ChartUtils.createXYSeries(degreeDist, "Degree Distribution");
XYSeries idSeries = ChartUtils.createXYSeries(inDegreeDist, "In-Degree Distribution");
XYSeries odSeries = ChartUtils.createXYSeries(outDegreeDist, "Out-Degree Distribution");
XYSeriesCollection dataset1 = new XYSeriesCollection();
dataset1.addSeries(dSeries);
XYSeriesCollection dataset2 = new XYSeriesCollection();
dataset2.addSeries(idSeries);
XYSeriesCollection dataset3 = new XYSeriesCollection();
dataset3.addSeries(odSeries);
JFreeChart chart1 = ChartFactory.createXYLineChart("Degree Distribution", "Value", "Count", dataset1, PlotOrientation.VERTICAL, true, false, false);
chart1.removeLegend();
ChartUtils.decorateChart(chart1);
ChartUtils.scaleChart(chart1, dSeries, false);
String degreeImageFile = ChartUtils.renderChart(chart1, "degree-distribution.png");
JFreeChart chart2 = ChartFactory.createXYLineChart("In-Degree Distribution", "Value", "Count", dataset2, PlotOrientation.VERTICAL, true, false, false);
chart2.removeLegend();
ChartUtils.decorateChart(chart2);
ChartUtils.scaleChart(chart2, dSeries, false);
String indegreeImageFile = ChartUtils.renderChart(chart2, "indegree-distribution.png");
JFreeChart chart3 = ChartFactory.createXYLineChart("Out-Degree Distribution", "Value", "Count", dataset3, PlotOrientation.VERTICAL, true, false, false);
chart3.removeLegend();
ChartUtils.decorateChart(chart3);
ChartUtils.scaleChart(chart3, dSeries, false);
String outdegreeImageFile = ChartUtils.renderChart(chart3, "outdegree-distribution.png");
NumberFormat f = new DecimalFormat("#0.000");
String report = "<HTML> <BODY> <h1>Degree Report </h1> " + "<hr>" + "<br> <h2> Results: </h2>" + "Average Degree: " + f.format(avgDegree) + "<br /><br />" + degreeImageFile + "<br /><br />" + indegreeImageFile + "<br /><br />" + outdegreeImageFile + "</BODY></HTML>";
return report;
}
use of org.jfree.data.xy.XYSeriesCollection in project gephi by gephi.
the class DynamicDegree method getReport.
@Override
public String getReport() {
//Time series
XYSeries dSeries = ChartUtils.createXYSeries(averages, "Degree Time Series");
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(dSeries);
JFreeChart chart = ChartFactory.createXYLineChart("Degree Time Series", "Time", "Average Degree", dataset, PlotOrientation.VERTICAL, true, false, false);
chart.removeLegend();
ChartUtils.decorateChart(chart);
ChartUtils.scaleChart(chart, dSeries, false);
String degreeImageFile = ChartUtils.renderChart(chart, "degree-ts.png");
NumberFormat f = new DecimalFormat("#0.000000");
String report = "<HTML> <BODY> <h1>Dynamic Degree Report </h1> " + "<hr>" + "<br> Bounds: from " + f.format(bounds.getLow()) + " to " + f.format(bounds.getHigh()) + "<br> Window: " + window + "<br> Tick: " + tick + "<br><br><h2> Average degrees over time: </h2>" + "<br /><br />" + degreeImageFile;
/*for (Interval<Double> averages : averages) {
report += averages.toString(dynamicModel.getTimeFormat().equals(DynamicModel.TimeFormat.DOUBLE)) + "<br />";
}*/
report += "<br /><br /></BODY></HTML>";
return report;
}
use of org.jfree.data.xy.XYSeriesCollection in project gephi by gephi.
the class DynamicNbNodes method getReport.
@Override
public String getReport() {
//Time series
XYSeries dSeries = ChartUtils.createXYSeries(counts, "Nb Nodes Time Series");
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(dSeries);
JFreeChart chart = ChartFactory.createXYLineChart("# Nodes Time Series", "Time", "# Nodes", dataset, PlotOrientation.VERTICAL, true, false, false);
chart.removeLegend();
ChartUtils.decorateChart(chart);
ChartUtils.scaleChart(chart, dSeries, false);
String imageFile = ChartUtils.renderChart(chart, "nb-nodes-ts.png");
NumberFormat f = new DecimalFormat("#0.000");
String report = "<HTML> <BODY> <h1>Dynamic Number of Nodes Report </h1> " + "<hr>" + "<br> Bounds: from " + f.format(bounds.getLow()) + " to " + f.format(bounds.getHigh()) + "<br> Window: " + window + "<br> Tick: " + tick + "<br><br><h2> Number of nodes over time: </h2>" + "<br /><br />" + imageFile;
/*for (Interval<Integer> count : counts) {
report += count.toString(dynamicModel.getTimeFormat().equals(DynamicModel.TimeFormat.DOUBLE)) + "<br />";
}*/
report += "<br /><br /></BODY></HTML>";
return report;
}
Aggregations