JFreeChart - Grafico a torta

In un grafico a torta, la lunghezza dell'arco di ogni settore è proporzionale alla quantità che rappresenta. Questo capitolo mostra come possiamo usare JFreeChart per crearePie Chart da un determinato insieme di dati aziendali.

Dati aziendali

Il seguente esempio illustra la vendita da dispositivi mobili con l'aiuto di un grafico a torta. Di seguito è riportato un elenco di diversi marchi di dispositivi mobili e la loro vendita (unità al giorno).

S.No Marche mobili Vendite (UNITÀ al giorno)
1 Iphone 5S 20
2 Samsung Grand 20
3 MOTO G 40
4 Nokia Lumia 10

Applicazione basata su AWT

Di seguito è riportato il codice per creare un grafico a torta utilizzando le informazioni fornite sopra. Questo codice ti aiuta a incorporare un grafico a torta in qualsiasi applicazione basata su AWT.

import javax.swing.JPanel;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
 
public class PieChart_AWT extends ApplicationFrame {
   
   public PieChart_AWT( String title ) {
      super( title ); 
      setContentPane(createDemoPanel( ));
   }
   
   private static PieDataset createDataset( ) {
      DefaultPieDataset dataset = new DefaultPieDataset( );
      dataset.setValue( "IPhone 5s" , new Double( 20 ) );  
      dataset.setValue( "SamSung Grand" , new Double( 20 ) );   
      dataset.setValue( "MotoG" , new Double( 40 ) );    
      dataset.setValue( "Nokia Lumia" , new Double( 10 ) );  
      return dataset;         
   }
   
   private static JFreeChart createChart( PieDataset dataset ) {
      JFreeChart chart = ChartFactory.createPieChart(      
         "Mobile Sales",   // chart title 
         dataset,          // data    
         true,             // include legend   
         true, 
         false);

      return chart;
   }
   
   public static JPanel createDemoPanel( ) {
      JFreeChart chart = createChart(createDataset( ) );  
      return new ChartPanel( chart ); 
   }

   public static void main( String[ ] args ) {
      PieChart_AWT demo = new PieChart_AWT( "Mobile Sales" );  
      demo.setSize( 560 , 367 );    
      RefineryUtilities.centerFrameOnScreen( demo );    
      demo.setVisible( true ); 
   }
}

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

$javac PieChart_AWT.java  
$java PieChart_AWT

Se tutto va bene, verrà compilato ed eseguito per generare il seguente grafico a torta:

Se non è necessario incorporare il grafico in alcuna applicazione, è possibile creare immagini del grafico al prompt dei comandi. JFreeChart ti consente di salvare le immagini dei grafici nei formati JPG o PNG.

Creazione di immagini JPEG

Riscriviamo l'esempio precedente per generare un'immagine JPEG da una riga di comando. Di seguito sono riportate le due API fornite dalla libreria JFreeChart, che puoi utilizzare per generare un'immagine PNG o JPEG secondo le tue esigenze.

  • saveChartAsPNG() - API per salvare l'immagine in formato PNG.

  • saveChartAsJPEG() - API per salvare l'immagine in formato JPEG.

import java.io.*;

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

public class PieChart {
   
   public static void main( String[ ] args ) throws Exception {
      DefaultPieDataset dataset = new DefaultPieDataset( );
      dataset.setValue("IPhone 5s", new Double( 20 ) );
      dataset.setValue("SamSung Grand", new Double( 20 ) );
      dataset.setValue("MotoG", new Double( 40 ) );
      dataset.setValue("Nokia Lumia", new Double( 10 ) );

      JFreeChart chart = ChartFactory.createPieChart(
         "Mobile Sales",   // chart title
         dataset,          // data
         true,             // include legend
         true,
         false);
         
      int width = 640;   /* Width of the image */
      int height = 480;  /* Height of the image */ 
      File pieChart = new File( "PieChart.jpeg" ); 
      ChartUtilities.saveChartAsJPEG( pieChart , chart , width , height );
   }
}

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

$javac PieChart.java  
$java PieChart

Se tutto va bene, verrà compilato ed eseguito per creare un file immagine JPEG denominato PieChart.jpeg nella directory corrente.