JFreeChart - Grafico a barre
Questo capitolo mostra come utilizzare JFreeChart per creare Bar Chart da un determinato insieme di dati aziendali.
Un grafico a barre utilizza barre di orientamento diverso (orizzontale o verticale) per mostrare confronti in varie categorie. Un asse (asse del dominio) del grafico mostra il dominio specifico confrontato e l'altro asse (asse dell'intervallo) rappresenta valori discreti.
Dati aziendali
Il seguente esempio illustra varie statistiche di auto con l'aiuto di un grafico a barre. Di seguito è riportato un elenco di marchi automobilistici con le loro diverse caratteristiche, che mostreremo utilizzando un grafico a barre:
| Macchina | Velocità | Voto dell'utente | Millage | Sicurezza | 
|---|---|---|---|---|
| Fiat | 1.0 | 3.0 | 5.0 | 5.0 | 
| Audi | 5.0 | 6.0 | 10.0 | 4.0 | 
| Ford | 4.0 | 2.0 | 3.0 | 6.0 | 
Applicazione basata su AWT
Di seguito è riportato il codice per creare un grafico a barre dalle informazioni fornite sopra. Questo codice ti aiuta a incorporare un grafico a barre in qualsiasi applicazione basata su AWT.
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.category.CategoryDataset; 
import org.jfree.data.category.DefaultCategoryDataset; 
import org.jfree.ui.ApplicationFrame; 
import org.jfree.ui.RefineryUtilities; 
public class BarChart_AWT extends ApplicationFrame {
   
   public BarChart_AWT( String applicationTitle , String chartTitle ) {
      super( applicationTitle );        
      JFreeChart barChart = ChartFactory.createBarChart(
         chartTitle,           
         "Category",            
         "Score",            
         createDataset(),          
         PlotOrientation.VERTICAL,           
         true, true, false);
         
      ChartPanel chartPanel = new ChartPanel( barChart );        
      chartPanel.setPreferredSize(new java.awt.Dimension( 560 , 367 ) );        
      setContentPane( chartPanel ); 
   }
   
   private CategoryDataset createDataset( ) {
      final String fiat = "FIAT";        
      final String audi = "AUDI";        
      final String ford = "FORD";        
      final String speed = "Speed";        
      final String millage = "Millage";        
      final String userrating = "User Rating";        
      final String safety = "safety";        
      final DefaultCategoryDataset dataset = 
      new DefaultCategoryDataset( );  
      dataset.addValue( 1.0 , fiat , speed );        
      dataset.addValue( 3.0 , fiat , userrating );        
      dataset.addValue( 5.0 , fiat , millage ); 
      dataset.addValue( 5.0 , fiat , safety );           
      dataset.addValue( 5.0 , audi , speed );        
      dataset.addValue( 6.0 , audi , userrating );       
      dataset.addValue( 10.0 , audi , millage );        
      dataset.addValue( 4.0 , audi , safety );
      dataset.addValue( 4.0 , ford , speed );        
      dataset.addValue( 2.0 , ford , userrating );        
      dataset.addValue( 3.0 , ford , millage );        
      dataset.addValue( 6.0 , ford , safety );               
      return dataset; 
   }
   
   public static void main( String[ ] args ) {
      BarChart_AWT chart = new BarChart_AWT("Car Usage Statistics", 
         "Which car do you like?");
      chart.pack( );        
      RefineryUtilities.centerFrameOnScreen( chart );        
      chart.setVisible( true ); 
   }
}Manteniamo il codice Java sopra in formato BarChart_AWT.java file, quindi compilarlo ed eseguirlo dal comando richiesto come -
$javac BarChar_AWT.java  
$java BarChart_AWTSe tutto va bene, verrà compilato ed eseguito per generare il seguente grafico a barre:
 
                Creazione di immagini JPEG
Riscriviamo l'esempio precedente per generare un'immagine JPEG da una riga di comando.
import java.io.*;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.chart.ChartUtilities;
public class BarChart {
   
   public static void main( String[ ] args )throws Exception {
      final String fiat = "FIAT";
      final String audi = "AUDI";
      final String ford = "FORD";
      final String speed = "Speed";
      final String millage = "Millage";
      final String userrating = "User Rating";
      final String safety = "safety";
      final DefaultCategoryDataset dataset = new DefaultCategoryDataset( );
      dataset.addValue( 1.0 , fiat , speed );
      dataset.addValue( 3.0 , fiat , userrating );
      dataset.addValue( 5.0 , fiat , millage );
      dataset.addValue( 5.0 , fiat , safety );
      dataset.addValue( 5.0 , audi , speed );
      dataset.addValue( 6.0 , audi , userrating );
      dataset.addValue( 10.0 , audi , millage );
      dataset.addValue( 4.0 , audi , safety );
      dataset.addValue( 4.0 , ford , speed );
      dataset.addValue( 2.0 , ford , userrating );
      dataset.addValue( 3.0 , ford , millage );
      dataset.addValue( 6.0 , ford , safety );
      JFreeChart barChart = ChartFactory.createBarChart(
         "CAR USAGE STATIStICS", 
         "Category", "Score", 
         dataset,PlotOrientation.VERTICAL, 
         true, true, false);
         
      int width = 640;    /* Width of the image */
      int height = 480;   /* Height of the image */ 
      File BarChart = new File( "BarChart.jpeg" ); 
      ChartUtilities.saveChartAsJPEG( BarChart , barChart , width , height );
   }
}Manteniamo il codice Java sopra riportato nel file BarChart.java, quindi compilarlo ed eseguirlo dal comando richiesto come -
$javac BarChart.java  
$java BarChartSe tutto va bene, verrà compilato ed eseguito per creare un file immagine JPEG denominato BarChart.jpeg nella directory corrente.