Laman

12 Feb 2011

2 Grafik / Chart Dengan JFreeChart Pada Java

Hal yang pertama kali dilakukan yaitu membuat sebuah class yang berfungsi untuk membuat chart/grafik
Pada kali ini saya akan memberi nama class tersebut class DualAxisDemo1


package demo;

import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JPanel;
import org.jfree.chart.*;
import org.jfree.chart.axis.*;
import org.jfree.chart.block.*;
import org.jfree.chart.labels.StandardCategoryToolTipGenerator;
import org.jfree.chart.plot.*;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.title.CompositeTitle;
import org.jfree.chart.title.LegendTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.*;

public class DualAxisDemo1 extends ApplicationFrame
{

public DualAxisDemo1(String s)
{
super(s);
JFreeChart jfreechart = createChart();
ChartPanel chartpanel = new ChartPanel(jfreechart);
chartpanel.setPreferredSize(new Dimension(500, 270));
setContentPane(chartpanel);
}

private static CategoryDataset createDataset1()
{
String s = "S1";
String s1 = "S2";
String s2 = "S3";
String s3 = "Category 1";
String s4 = "Category 2";
String s5 = "Category 3";
String s6 = "Category 4";
String s7 = "Category 5";
String s8 = "Category 6";
String s9 = "Category 7";
String s10 = "Category 8";
DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
defaultcategorydataset.addValue(1, s, s3);
defaultcategorydataset.addValue(2, s, s4);
defaultcategorydataset.addValue(3, s, s5);
defaultcategorydataset.addValue(4, s, s6);
defaultcategorydataset.addValue(5D, s, s7);
defaultcategorydataset.addValue(7D, s, s8);
defaultcategorydataset.addValue(7D, s, s9);
defaultcategorydataset.addValue(8D, s, s10);
defaultcategorydataset.addValue(5D, s1, s3);
defaultcategorydataset.addValue(7D, s1, s4);
defaultcategorydataset.addValue(6D, s1, s5);
defaultcategorydataset.addValue(8D, s1, s6);
defaultcategorydataset.addValue(4D, s1, s7);
defaultcategorydataset.addValue(4D, s1, s8);
defaultcategorydataset.addValue(2D, s1, s9);
defaultcategorydataset.addValue(1.0D, s1, s10);
defaultcategorydataset.addValue(4D, s2, s3);
defaultcategorydataset.addValue(3D, s2, s4);
defaultcategorydataset.addValue(2D, s2, s5);
defaultcategorydataset.addValue(3D, s2, s6);
defaultcategorydataset.addValue(6D, s2, s7);
defaultcategorydataset.addValue(3D, s2, s8);
defaultcategorydataset.addValue(4D, s2, s9);
defaultcategorydataset.addValue(3D, s2, s10);
return defaultcategorydataset;
}

private static CategoryDataset createDataset2()
{
String s = "S4";
String s1 = "Category 1";
String s2 = "Category 2";
String s3 = "Category 3";
String s4 = "Category 4";
String s5 = "Category 5";
String s6 = "Category 6";
String s7 = "Category 7";
String s8 = "Category 8";
DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
defaultcategorydataset.addValue(15D, s, s1);
defaultcategorydataset.addValue(24D, s, s2);
defaultcategorydataset.addValue(31D, s, s3);
defaultcategorydataset.addValue(25D, s, s4);
defaultcategorydataset.addValue(56D, s, s5);
defaultcategorydataset.addValue(37D, s, s6);
defaultcategorydataset.addValue(77D, s, s7);
defaultcategorydataset.addValue(18D, s, s8);
return defaultcategorydataset;
}

private static JFreeChart createChart()
{
JFreeChart jfreechart = ChartFactory.createBarChart("Dual Axis Chart", "Category", "Value", createDataset1(), PlotOrientation.VERTICAL, false, true, false);
jfreechart.setBackgroundPaint(Color.white);
CategoryPlot categoryplot = (CategoryPlot)jfreechart.getPlot();
categoryplot.setBackgroundPaint(new Color(238, 238, 255));
categoryplot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
CategoryDataset categorydataset = createDataset2();
categoryplot.setDataset(1, categorydataset);
categoryplot.mapDatasetToRangeAxis(1, 1);
CategoryAxis categoryaxis = categoryplot.getDomainAxis();
categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.DOWN_45);
NumberAxis numberaxis = new NumberAxis("Secondary");
categoryplot.setRangeAxis(1, numberaxis);
LineAndShapeRenderer lineandshaperenderer = new LineAndShapeRenderer();
lineandshaperenderer.setToolTipGenerator(new StandardCategoryToolTipGenerator());
categoryplot.setRenderer(1, lineandshaperenderer);
categoryplot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);
LegendTitle legendtitle = new LegendTitle(categoryplot.getRenderer(0));
legendtitle.setMargin(new RectangleInsets(2D, 2D, 2D, 2D));
legendtitle.setBorder(new BlockBorder());
LegendTitle legendtitle1 = new LegendTitle(categoryplot.getRenderer(1));
legendtitle1.setMargin(new RectangleInsets(2D, 2D, 2D, 2D));
legendtitle1.setBorder(new BlockBorder());
BlockContainer blockcontainer = new BlockContainer(new BorderArrangement());
blockcontainer.add(legendtitle, RectangleEdge.LEFT);
blockcontainer.add(legendtitle1, RectangleEdge.RIGHT);
blockcontainer.add(new EmptyBlock(2000D, 0.0D));
CompositeTitle compositetitle = new CompositeTitle(blockcontainer);
compositetitle.setPosition(RectangleEdge.BOTTOM);
jfreechart.addSubtitle(compositetitle);
return jfreechart;
}

public static JPanel createDemoPanel()
{
JFreeChart jfreechart = createChart();
return new ChartPanel(jfreechart);
}
}

Selanjutnya yaitu tinggal menjalankannya melalui class main

package demo;

import org.jfree.ui.RefineryUtilities;
public class Main {
public static void main(String args[])
{
DualAxisDemo1 dualaxisdemo1 = new DualAxisDemo1("Dual Axis Demo 1");
dualaxisdemo1.pack();
RefineryUtilities.centerFrameOnScreen(dualaxisdemo1);
dualaxisdemo1.setVisible(true);
}
}


Hasilnya akan seperti ini :


Selamat Mencoba :D

4 komentar:

  1. mas kalau ingin menampilkan grafik yang ada di tabel gimana . . .??

    BalasHapus
    Balasan
    1. hampir sama dengan yang diatas, akan tetapi data yg diperoleh tinggal diambil saja dari tabel yang ada..

      Hapus
  2. bagaimana jika kita ingin grafik tersebut berada pada sebuah frame?
    untuk source codenya ditempatkan di sebelah mana? :)

    BalasHapus
    Balasan
    1. Masukkan sebuah panel diatas frame tersebut, dan pada panel silahkan masukkan source code nya

      Hapus