JFreeChart is a free 100% Java chart library created by David Gilbert. JFreeChart makes it easy for developers to display professional quality charts in their applications. This article assumes that you have knowledge in Eclipse RCP
All Android Tutorials For Beginner And Professional In This Website.
JFreeChart is a free 100% Java chart library created by David Gilbert. JFreeChart makes it easy for developers to display professional quality charts in their applications. This article assumes that you have knowledge in Eclipse RCP
Download the JFreeChart distribution (jars) from the website JFreeChart Homepage .
For the required Eclipse download please see Eclipse RCP
Create a new RCP project "de.vogella.rcp.jfreechart.pie" using "RCP application with a view" as a template. .
Create a Plugin project "de.vogella.rcp.jfreechart.libs" for the following JFreeChart jars. Please replace the version numbers with the version you are using. How to create a new plugin project for jars is described in Create a plugin project for your jar for details).
jcommon-1.0.16.jar
jfreechart-1.0.13.jar
jfreechart-1.0.13-experimental.jar
jfreechart-1.0.13-swt.jar
swtgraphics2d.jar
JFreeChart is using SWT therefore you need to add the dependency to SWT to the project. In project "de.vogella.rcp.jfreechart.libs" select the MANIFEST.MF and the tab "Dependencies". Press "Add" and select org.eclipse.swt as the same jars to your runtime environment.
Add "de.vogella.jfreechart.libs" as a dependency to project "de.vogella.rcp.jfreechart.pie". Select the file MANIFEST.MF and the tab "Dependencies". Add "de.vogella.rcp.jfreechart.libs" as a dependency.
Change the coding of the view to the following:
package de.vogella.rcp.jfreechart.pie;
import java.awt.Font;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.ViewPart;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.jfree.experimental.chart.swt.ChartComposite;
public class View extends ViewPart {
public void createPartControl(Composite parent) {
JFreeChart chart = createChart(createDataset());
new ChartComposite(parent, SWT.NONE,
chart, true);
}
public void setFocus() {
}
/**
* Creates the Dataset for the Pie chart
*/
private PieDataset createDataset() {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("One", new Double(43.2));
dataset.setValue("Two", new Double(10.0));
dataset.setValue("Three", new Double(27.5));
dataset.setValue("Four", new Double(17.5));
dataset.setValue("Five", new Double(11.0));
dataset.setValue("Six", new Double(19.4));
return dataset;
}
/**
* Creates the Chart based on a dataset
*/
private JFreeChart createChart(PieDataset dataset) {
JFreeChart chart = ChartFactory.createPieChart("Pie Chart Demo 1", // chart
// title
dataset, // data
true, // include legend
true, false);
PiePlot plot = (PiePlot) chart.getPlot();
plot.setSectionOutlinesVisible(false);
plot.setLabelFont(new Font("SansSerif", Font.PLAIN, 12));
plot.setNoDataMessage("No data available");
plot.setCircular(false);
plot.setLabelGap(0.02);
return chart;
}
}
Create a new Plugin project "de.vogella.rcp.jfreechart.barchart" using "RCP application with a view" as a template. Add "de.vogella.rcp.jfreechart.libs" as a dependency to project "de.vogella.jfreechart.barchart" and change the coding of the view to the following:
package de.vogella.rcp.jfreechart.barchart;
import java.awt.Color;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.ViewPart;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.experimental.chart.swt.ChartComposite;
public class View extends ViewPart {
private CategoryDataset createDataset() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
// row keys...
String series1 = "First";
String series2 = "Second";
// column keys...
String category1 = "Label 1";
String category2 = "Label 2";
String category3 = "Label 3";
dataset.addValue(1.0, series1, category1);
dataset.addValue(4.0, series1, category2);
dataset.addValue(3.0, series1, category3);
dataset.addValue(5.0, series2, category1);
dataset.addValue(7.0, series2, category2);
dataset.addValue(6.0, series2, category3);
return dataset;
}
/**
* Creates a chart.
*
* @param dataset
* dataset.
*
* @return A chart.
*/
private JFreeChart createChart(CategoryDataset dataset) {
JFreeChart chart = ChartFactory.createBarChart("Bar Chart", // chart
// title
"Labels", // domain axis label
"Values", // range axis label
dataset, // data
PlotOrientation.VERTICAL, // orientation
true, // include legend
true, // tooltips?
false // URLs?
);
CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setBackgroundPaint(Color.lightGray);
plot.setDomainGridlinePaint(Color.white);
plot.setDomainGridlinesVisible(true);
plot.setRangeGridlinePaint(Color.white);
return chart;
}
public void createPartControl(Composite parent) {
JFreeChart chart = createChart(createDataset());
final ChartComposite frame = new ChartComposite(parent, SWT.NONE,
chart, true);
}
public void setFocus() {
}
}
Run it and see that it is working.
Thank you for practicing with this tutorial.
I maintain this tutorial in my private time. If you like the information please help me by donating or by