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) Ritorna come valore un oggetto JFreeChart e consente di creare un diagramma a barre.
  • createGanttChart(java.lang.String title, java.lang.String categoryAxisLabel, java.lang.String dateAxisLabel, IntervalCategoryDataset dataset, boolean legend, boolean tooltips, boolean urls) Crea un diagramma di Gantt e ritorna sempre un oggetto di tipo JFreeChart.
  • createHistogram(java.lang.String title, java.lang.String xAxisLabel, java.lang.String yAxisLabel, IntervalXYDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls) Crea un Istogramma.
  • createLineChart(java.lang.String title, java.lang.String categoryAxisLabel, java.lang.String valueAxisLabel, CategoryDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls) crea un diagramma lineare.

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: estende il numero di colori utilizzabili.
  • ChartFrame: un frame per la visualizzazione del diagramma.
  • ChartMouseEvent: un insieme di metodi per la visualizzazione dei dati al passaggio del mouse sul display.
  • ChartUtility:un insieme di metodi per il salvataggio e l'export del grafico generato nei vari formati disponibili.
  • HashUtilities: metodi per il calcolo dell'hash codes.
  • PolarChartPanel: metodi per la gestione di menu e di popUp Menù.

Ti consigliamo anche