Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Grafici in Java con JFreeChart

Spesso ci troviamo d'avanti alla necessità di creare dei grafici nelle nostre applicazioni. JFreeChart è una libreria che ci permette di creare dei grafici in Java partendo dadati statici o dinamici
Spesso ci troviamo d'avanti alla necessità di creare dei grafici nelle nostre applicazioni. JFreeChart è una libreria che ci permette di creare dei grafici in Java partendo dadati statici o dinamici
Link copiato negli appunti

In molte applicazioni, standalone o Web, si riscontra il problema della visualizzazione grafica di dati per mezzo di diagrammi.

JFreeChart è una libreria Open Source che viene utilizzata per generare una gran varietà di grafici.

Tramite JFreeChart si possono creare grafici bidimensionali e tridimensionali, bar charts (orizzontali e verticali), serie temporali, istogrammi, grafici di Gantt e a torta

Grafici

Di seguito sono presenti alcuni tipi di grafici che si possono realizzare.

Per i Digrammi a Torta si utilizza la PieDataSet:

Figura 1. Diagramma a Torta
Diagramma a Torta

Per il grafico a barre, grafico lineare e waterfall, l'interfaccia è CategoryDataSet:

Figura 2. Grafico a Barre
Grafico a Barre

Per gli Istogrammi la IntervalXYDataset:

Figura 3. Istogramma
Istogramma

Per i Diagramma Gantt la IntervalCategoryDataset:

Figura 4. Diagramma Gantt
Diagramma Gantt

Inoltre è possibile realizzare grafici tridimensionali. L'esportazione dei grafici generati si può effettuare nei formati JPEG e PNG. I grafici, di tipo diverso, si possono combinare, ecco un esempio lineare con un'istogramma:

Figura 4. IstogrammaLineare
Istogramma Lineare

Installazione e Applicazione

Per prima cosa scaricarichiamo la libreria JFreeChart.

Notiamo subito che la JfreeChart necessita anche della libreria JCommon scaricabile dallo stesso sito.

Per creare un qualunque tipo di grafico, tramite JFreeChart, bisogna seguire i seguenti passi:

  • Creazione di un DataSet
  • Creazione di un oggetto JFreeChart
  • Impostazione degli attributi del diagramma
  • Rendering del grafico
  • Definizione degli assi
  • Creazione di un DataSet

    La creazione di un DataSet avviene attraverso le classi messe a disposizione dal package org.jfree.data

    Tale passaggio ci consente di creare un DataSet di dati per la visualizzazione di quest'ultimi sotto forma di grafici.

    La natura dei dati può essere statica (impostata di default al momento della creazione del codice) o dinamica ( attraverso dati provenienti da database o da query).

    Per usare una serie di dati statici, bisogna istanziare un oggetto della classe TimeSeries e utilizzare il metodo add(). Il TimeSeries va aggiunto al metodo add della classe TimeSeriesCollection.

    Listato 1. Crea un istanza con dati statici

    TimeSeries time = new TimeSeries( "prova", Month.class ); //inizializza l'oggetto della classe TimeSeries
    time.add( new Month( 1, 2007 ), 45.0 ); //inserisce i parametri definendo il periodo (nel nostro caso una data) e il valore
    time.add( new Month( 2, 2007), 67.3 );
    TimeSeriesCollection timeCollection = new TimeSeriesCollection(); //istanzia il TimeSeriesCollection
    timeCollection.addSeries(time); //inserisce il timeSeries

    Se invece i dati provengono da un dataBase o da una query, bisogna sempre istanziare un oggetto appartenente alla classe TimeSeries e alla TimeSeriesCollection, ma occorre collegarsi al database.

    Per ovviare a questo problema, si crea un oggetto della classe DataRetriever, che si collega al database in questione ed esegue la query.

    Il risultato di quest'ultimo viene passato al TimeSeriesCollection.

    Listato 2. Crea un istanza con dati dinamici

    TimeSeriesCollection dataCollection = new TimeSeriesCollection();
    TimeSeries time = new TimeSeries( "prova", Month.class );
    DataRetriever dataRetriever = new DataRetriever(); //crea un'istanza del DataRetriever e interroga la Tabella
    dataCollection = dataRetriever.getData( "SELECT * FROM TabellaProva" );

    Creazione di un oggetto JFreeChart

    La creazione di un oggetto JFreeChart avviene tramite uno dei tanti metodi della classe org.jfree.chart.ChartFactory.

    Tale classe mette a disposizione una collezione di metodi (i quali ritornano tutti un oggetto di tipo JFreeChart) che consentono la generazione dei grafici standard. Esempio:

    • createBarChart java.lang.String title, java.lang.String categoryAxisLabel, java.lang.String valueAxisLabel, CategoryDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls
    • createGanttChart java.lang.String title, java.lang.String categoryAxisLabel, java.lang.String dateAxisLabel, IntervalCategoryDataset dataset, boolean legend, boolean tooltips, boolean urls
    • createHistogram java.lang.String title, java.lang.String xAxisLabel, java.lang.String yAxisLabel, IntervalXYDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls
    • createLineChart java.lang.String title, java.lang.String categoryAxisLabel, java.lang.String valueAxisLabel, CategoryDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls

    Impostazione degli attributi

    Per impostare gli attributi del diagramma si usa una delle classi plot del package org.jfree.chart.plot, tra cui: ColorPalette, GreyPalette, CombineRangeXYPlot, PiePlot, PiePlot3D

    Rendering e definizione degli assi

    Per fare il rendering del grafico si usano le classi del package org.jfree.chart.renderer

    Invece, per definire gli assi (x, y, ed eventualmente z) si usano le classi del package org.jfree.chart.axis.

    Utility per la realizzazione

    La libreria mette a disposizione una serie di classi (tutte appartenenti al package org.jfree.chart) che offrono una serie di utility per la realizzazione dei diagrammi:

    • ChartColor
    • ChartFrame
    • ChartMouseEvent
    • ChartUtility
    • HashUtilities
    • PolarChartPanel

Ti consigliamo anche