Traccia un nuovo corso con JFreeChart

In qualità di sviluppatore, mi viene spesso chiesto di dimostrare nuove applicazioni. Dopo aver fatto molte demo, ho notato che gli utenti sono spesso inizialmente più interessati a come appare un'applicazione che a ciò che fa. Ho anche notato che uno dei modi migliori per fare una buona prima impressione è con un grafico tridimensionale colorato.

JFreeChart è una popolare libreria di grafici Java open source in grado di generare i tipi di grafici più comuni, inclusi grafici a torta, a barre, a linee e di Gantt. Inoltre, l'API JFreeChart supporta molte funzionalità interattive, come i suggerimenti e lo zoom. JFreeChart fornisce una scelta eccellente per gli sviluppatori che hanno bisogno di aggiungere grafici ad applicazioni basate su Swing o Web.

Nota: i seguenti esempi sono basati su JFreeChart versione 0.9.4. Per compilare ed eseguire il codice incluso in questa colonna, è necessario disporre di due file jar dalla distribuzione JFreeChart jfreechart-0.9.4.jare jcommon-0.7.1.jar, nel proprio classpath.

Grafici e set di dati

Per creare un grafico utilizzando JFreeChart, è necessario creare un Dataset, che poi si utilizza per creare un file JFreeChart. A Datasetcontiene i dati visualizzati nel grafico. JFreeChart presenta molti Datasetoggetti diversi , che puoi utilizzare per creare tipi assortiti di grafici. Dopo aver creato un Dataset, crei il grafico effettivo. JFreeChart utilizza un oggetto denominato in modo appropriato JFreeChartper rappresentare i grafici. Crei JFreeChartoggetti da Datasetoggetti con la ChartFactoryclasse. Negli esempi seguenti, creeremo grafici a torta, XY e grafici a barre insieme agli Datasetoggetti corrispondenti .

Grafico a torta

Un grafico a torta viene creato da un file PieDataset. L'esempio seguente crea un PieDatasetusing the DefaultPieDatasetclass, aggiunge due valori tramite il setValue()metodo e quindi crea un grafico a torta con il metodo ChartFactorys createPieChart(). Questo esempio creerà un grafico a torta con il titolo "Grafico a torta di esempio", una legenda e due sezioni: JavaWorld con il 75 percento della torta e Altro con l'altro 25 percento:

DefaultPieDataset pieDataset = nuovo DefaultPieDataset (); pieDataset.setValue ("JavaWorld", new Integer (75)); pieDataset.setValue ("Altro", new Integer (25)); Grafico JFreeChart = ChartFactory.createPieChart ("Grafico a torta di esempio", // Title pieDataset, // Dataset true // Mostra legenda);

Grafico XY

È XYDatasetpossibile creare grafici ad area, a linee e XY per passaggi. L'esempio seguente crea un XYDatasetda una serie di dati contenente tre punti XY. Successivamente, ChartFactoryil createAreaXYChart()metodo di crea un grafico ad area XY. Oltre ai parametri per titolo, set di dati e legenda, createAreaXYChart()accetta le etichette per gli assi X e Y:

Serie XYSeries = nuovo XYSeries ("Dimensione media"); series.add (20.0, 10.0); series.add (40.0, 20.0); series.add (70.0, 50.0); XYDataset xyDataset = nuovo XYSeriesCollection (serie); Grafico JFreeChart = ChartFactory.createAreaXYChart ("Grafico XY di esempio", // Titolo "Altezza", // Etichetta asse X "Peso", // Etichetta asse Y xyDataset, // Set di dati true // Mostra legenda);

Grafico a barre

A CategoryDatasetpuò creare numerosi grafici diversi, inclusi grafici a barre orizzontali e verticali. L'esempio seguente crea un CatagoryDatasetcon due serie di dati e due categorie, quindi crea un grafico a barre verticali 3D da questo set di dati. Questo esempio crea un grafico che confronta la crescita delle vendite in due trimestri su due anni:

String [] seriesNames = new String [] {"2001", "2002"}; String [] categoryNames = new String [] {"First Quater", "Second Quater"}; Number [] [] categoryData = new Integer [] [] {{new Integer (20), new Integer (35)}, {new Integer (40), new Integer (60)}}; CategoryDataset categoryDataset = new DefaultCategoryDataset (seriesNames, categoryNames, categoryData); Grafico JFreeChart = ChartFactory.createVerticalBarChart3D ("Grafico categoria di esempio", // Titolo "Quarti", // Etichetta asse X "Vendite", // Etichetta asse Y categoryDataset, // Dataset true // Mostra legenda);

Integra JFreeChart

L'integrazione di JFreeChart in un'applicazione Swing è relativamente semplice. Basta creare un BufferedImagedal grafico e utilizzare l'immagine come icona per a JLabel:

BufferedImage image = chart.createBufferedImage (500,300); JLabel lblChart = new JLabel (); lblChart.setIcon (new ImageIcon (immagine));

JFreeChart include anche una classe denominata ChartUtilitiesche fornisce diversi metodi per salvare i grafici su file o scriverli su stream in formato JPEG o PNG. Ad esempio, la seguente porzione di codice può esportare un grafico in un JPEG:

ChartUtilities.saveChartAsJPEG (nuovo file ("chart.jpg"), chart, 500, 300); 

I metodi nella ChartUtilitiesclasse possono essere utilizzati per creare JPEG da utilizzare in una pagina Web statica o utilizzati in un'applicazione basata su JSP (JavaServer Pages) / servlet per trasmettere dinamicamente i grafici alle pagine Web.

Sul tuo segno, preparati, grafico!

Questo articolo ti ha mostrato come creare alcuni set di dati e grafici comuni con la libreria JFreeChart. JFreeChart ha molto di più da offrire, inclusi molti tipi di grafici e funzionalità avanzate come grafici combinati ed eventi del mouse del grafico. Visita la home page di JFreeChart per l'ultima versione del software, una demo basata su servlet, collegamenti a progetti che utilizzano JFreeChart e altro ancora.

Erik Swenson è un consulente e il fondatore di Open Source Software Solutions. Swenson è specializzato nello sviluppo di Java utilizzando software e componenti open source. Inoltre, ha sviluppato progetti open source JasperEdit e OpenReports.

Ulteriori informazioni su questo argomento

  • Scarica il codice che accompagna questo articolo

    //images.techhive.com/downloads/idge/imported/article/jvw/2002/12/jw-1227-opensourceprofile.zip

  • La home page di JFreeChart

    //www.object-refinery.com/jfreechart

  • jCharts è un'alternativa open source a JFreeChart

    //jcharts.sourceforge.net

  • Per ulteriori strumenti open source, sfoglia le colonne del profilo Open Source di Erik Swenson

    //www.javaworld.com/columns/jw-opensource-index.shtml

  • Sfoglia la sezione Strumenti di sviluppo dell'Indice di argomenti di JavaWorld

    //www.javaworld.com/channel_content/jw-tools-index.shtml

  • Discuti sullo sviluppo Java nel forum JavaWorld

    //forums.devworld.com/[email protected]@.ee6b802

  • Iscriviti alla newsletter settimanale gratuita di JavaWorld

    //www.javaworld.com/subscribe

  • Troverai una vasta gamma di articoli relativi all'IT tratti dalle nostre pubblicazioni gemelle su .net

Questa storia, "Traccia un nuovo corso con JFreeChart" è stata originariamente pubblicata da JavaWorld.