JFreeChart - Interfaccia file

Finora abbiamo studiato come creare vari tipi di grafici utilizzando le API JFreeChart utilizzando dati statici. Ma nell'ambiente di produzione, i dati vengono forniti sotto forma di file di testo con un formato predefinito, oppure provengono direttamente dal database.

Questo capitolo spiegherà come leggere un semplice dato da un dato file di testo da una data posizione e quindi usare JFreeChart per creare un grafico a tua scelta.

Dati aziendali

Considera che abbiamo un file denominato mobile.txt, con diversi brand di cellulari e la loro vendita (unità giornaliere) separati da una semplice virgola (,)

Iphone 5S, 20   
Samsung Grand, 20   
MOTO G, 40  Nokia  
Lumia, 10

Generazione del grafico in base al file

Di seguito è riportato il codice per creare un grafico a torta basato sulle informazioni fornite in mobile.txt -

import java.io.*; 

import java.util.StringTokenizer; 

import org.jfree.chart.ChartUtilities; 
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.JFreeChart; 
import org.jfree.data.general.DefaultPieDataset;

public class PieChart_File {
   
   public static void main( String[ ] args )throws Exception {
      
      String mobilebrands[ ] = {    
         "IPhone 5s" ,   
         "SamSung Grand" ,   
         "MotoG" ,    
         "Nokia Lumia" 
      };
      
      InputStream in = new FileInputStream( new File( "C:/temp/test.txt" ) );          
      BufferedReader reader = new BufferedReader(new InputStreamReader(in ) );          
      StringBuilder out = new StringBuilder();          
      String line;          
      DefaultPieDataset dataset = new DefaultPieDataset();          

      while (( line = reader.readLine() ) != null ) {
         out.append( line );
      }
      
      StringTokenizer s = new StringTokenizer( out.toString(), "," );
      int i = 0;      
      
      while( s.hasMoreTokens( ) && ( mobilebrands [i] != null ) ) {
         dataset.setValue(mobilebrands[i], Double.parseDouble( s.nextToken( ) ));
         i++;
      }
      
      JFreeChart chart = ChartFactory.createPieChart( 
         "Mobile Sales",    // chart title           
         dataset,           // data           
         true,              // include legend           
         true,           
         false);
      
      int width = 560;    /* Width of the image */          
      int height = 370;   /* Height of the image */                          
      File pieChart = new File( "pie_Chart.jpeg" );                        
      ChartUtilities.saveChartAsJPEG( pieChart, chart, width, height); 
   }
}

Manteniamo il codice Java sopra in formato PieChart_File.java file, quindi compilarlo ed eseguirlo dal comando richiesto come -

$javac PieChart_File.java  
$java PieChart_File

Se tutto va bene, verrà compilato ed eseguito per creare un file immagine JPEG denominato PieChart.jpeg che contiene la seguente tabella.