Desde mi punto de vista el JFreeChart es la mejor solucion por la calidad que tiene.
A continuacion un ejemplo de como hacer un graficador con JFreeChart.
En este caso graficare la sigueinte funcion f(x)=4sen(x).
=====================================================================
<pre lang='java' lineno='1'>/*
* Autor: Roberto Perez
* Potosi - Bolivia.
*/
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import java.awt.Dimension;
public class Graficador extends ApplicationFrame{
public Graficador(){
super("Graficador");
XYDataset paresDeDatos = generarDatos();
JFreeChart diagrama = crearDiagrama(paresDeDatos);
ChartPanel chartPanel = new ChartPanel(diagrama);
chartPanel.setPreferredSize(new Dimension(500,400));
setContentPane(chartPanel);
}
private XYDataset generarDatos(){
//le pasamos una funcion generadora f(x)
XYSeries datos = new XYSeries("Linea Funcion");
for(double x=0.0; x<=50.0; x+=0.2) datos.add(x,f(x));
XYSeriesCollection conjuntoDatos = new XYSeriesCollection();
conjuntoDatos.addSeries(datos);
return conjuntoDatos;
}
private JFreeChart crearDiagrama(XYDataset conjuntoDatos){
JFreeChart diag = ChartFactory.createXYLineChart(
"Graficador", //Titulo Grafica
"X", // Leyenda eje X
"Y", // Leyenda eje Y
conjuntoDatos, // Los datos
PlotOrientation.VERTICAL, //orientacion
false, // ver titulo de linea
false, //tooltips
false //URL
);
return diag;
}
//aqui definimos la funcion que desees, en esta caso la f(x) = 4sen(x)
private double f(double x){
return 4*Math.sin(x);
}
public static void main(String[] arg){
Graficador miGraficador = new Graficador();
miGraficador.pack();
RefineryUtilities.centerFrameOnScreen(miGraficador);
miGraficador.setVisible(true);
}
}
=============================
Ten en cuenta que debes tener instaldo las paquetes de JFreeChart de forma correcta