How to draw Pie Chart in java
JFree
Chart
JFreeChart is a free 100% Java
chart library that makes it easy for developers to display professional quality
charts in their applications. With JfreeChart liberary Visualization is easy in java , you can visualize your data in different ways.
Using JfreeChart liberary you can draw pie chart, xyLine chart , bar chart etc. just copy and paste the below given code and add external jars files to your class path,jfreechart-1.0.13 and jcommon-1.0.16.
Code example for pie chart in java.
package
aurangzeb.utk.com;
import java.awt.*;
import
org.jfree.chart.ChartFactory;
import
org.jfree.chart.ChartFrame;
import
org.jfree.chart.JFreeChart;
import org.jfree.chart.title.*;
import
org.jfree.data.general.DefaultPieDataset;
import org.jfree.ui.*;
public class pie{
public static void main(String
arg[]){
DefaultPieDataset
pieDataset = new DefaultPieDataset();
pieDataset.setValue("One", new Integer(10));
pieDataset.setValue("Two", new Integer(20));
pieDataset.setValue("Three", new Integer(30));
pieDataset.setValue("Four", new Integer(10));
pieDataset.setValue("Five", new Integer(20));
pieDataset.setValue("Six", new Integer(10));
JFreeChart
chart = ChartFactory.createPieChart("Pie Chart using JFreeChart", pieDataset, true,true,true);
ChartFrame
frame1=new ChartFrame("Pie Chart",chart);
frame1.setVisible(true);
frame1.setSize(300,300);
}
}
Output:
package aurangzeb.utk.com;
import org.jfree.chart.*;
import
org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import
org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.xy.*;
import org.jfree.data.*;
public class xyLine{
public static void main(String arg[]){
XYSeries
series = new XYSeries("Collection API objects ");
series.add(200.0,
300);
series.add(150,
250.0);
series.add(200.0,
250.0);
series.add(170.0,
250.0);
XYDataset
xyDataset = new XYSeriesCollection(series);
JFreeChart
chart = ChartFactory.createXYLineChart
("XYLine Chart using
JFreeChart", "time", "collection objects", xyDataset,
PlotOrientation.VERTICAL, true, true, false);
ChartFrame
frame1=new ChartFrame("XYLine Chart",chart);
frame1.setVisible(true);
frame1.setSize(300,300);
}
}
output:
Example Code for TimeSeriesChart:
package aurangzeb.utk.com;
import java.awt.BasicStroke;
import java.awt.Color;
import java.text.SimpleDateFormat;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.plot.XYPlot;
import
org.jfree.chart.renderer.xy.StandardXYItemRenderer;
import
org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.data.time.Minute;
import org.jfree.data.time.TimeSeries;
import
org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class TimeSeriesDemo12 extends
ApplicationFrame {
/**
* A demo.
*
* @param title the frame title.
*/
public TimeSeriesDemo12(final String title) {
super(title);
final XYDataset dataset = createDataset();
final JFreeChart chart = createChart(dataset);
final ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
chartPanel.setMouseZoomable(true, false);
setContentPane(chartPanel);
}
@SuppressWarnings("deprecation")
private
JFreeChart createChart(final XYDataset dataset) {
final JFreeChart chart = ChartFactory.createTimeSeriesChart(
"TimeSeries Chart in
java",
"Date",
"Value",
dataset,
true,
true,
false
);
chart.setBackgroundPaint(Color.white);
// final StandardLegend sl =
(StandardLegend) chart.getLegend();
//
sl.setDisplaySeriesShapes(true);
final XYPlot plot = chart.getXYPlot();
//plot.setOutlinePaint(null);
plot.setBackgroundPaint(Color.lightGray);
plot.setDomainGridlinePaint(Color.white);
plot.setRangeGridlinePaint(Color.white);
// plot.setAxisOffset(new
Spacer(Spacer.ABSOLUTE, 5.0, 5.0, 5.0, 5.0));
plot.setDomainCrosshairVisible(true);
plot.setRangeCrosshairVisible(false);
final XYItemRenderer renderer = plot.getRenderer();
if (renderer instanceof StandardXYItemRenderer) {
final StandardXYItemRenderer rr =
(StandardXYItemRenderer) renderer;
rr.setPlotImages(true);
rr.setShapesFilled(true);
renderer.setSeriesStroke(0, new
BasicStroke(2.0f));
renderer.setSeriesStroke(1, new
BasicStroke(2.0f));
}
final DateAxis axis = (DateAxis) plot.getDomainAxis();
axis.setDateFormatOverride(new SimpleDateFormat("hh:mma"));
return chart;
}
private XYDataset createDataset() {
final TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.setDomainIsPointsInTime(true);
final TimeSeries s1 = new TimeSeries("Series 1",
Minute.class);
s1.add(new Minute(0, 0, 7, 12, 2003), 1.2);
s1.add(new Minute(30, 12, 7, 12, 2003), 3.0);
s1.add(new Minute(15, 14, 7, 12, 2003), 8.0);
final TimeSeries s2 = new TimeSeries("Series 2",
Minute.class);
s2.add(new Minute(0, 3, 7, 12, 2003), 0.0);
s2.add(new Minute(30, 9, 7, 12,
2003), 0.0);
s2.add(new Minute(15, 10, 7, 12, 2003), 0.0);
dataset.addSeries(s1);
dataset.addSeries(s2);
return dataset;
}
/**
* Starting point for the demonstration application.
*
* @param args ignored.
*/
public static void main(final String[] args) {
final TimeSeriesDemo12 demo = new TimeSeriesDemo12("Time Series
Demo 12");
demo.pack();
RefineryUtilities.centerFrameOnScreen(demo);
demo.setVisible(true);
}
}
