JFreeChart條形圖

本章演示了如何使用JFreeChart從一個給定的業務數據創建條形圖。

條形圖使用不同的方位(水準或垂直)條,以顯示不同類別的比較。圖表中的一個軸(域軸)示出了特定的域進行比較,並在另一個軸(範圍軸)表示的離散值。

業務數據

下麵的例子描述了各種汽車用統計柱狀圖。以下是汽車品牌以及它們的不同特點,我們將展示使用一個條形圖的列表:

汽車 速度 用戶評價 公里數 安全性
Fiat 1.0 3.0 5.0 5.o
Audi 5.0 6.0 10.0 4.0
Ford 4.0 2.0 3.0 6.0

基於AWT的應用

以下是對從上述給定的資訊創建條形圖的代碼。此代碼可以在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 );
   }
}

保持BarChart_AWT.java檔中的Java代碼,然後從命令提示符下編譯並運行它,如下所示:

$javac BarChar_AWT.java
$java BarChart_AWT

如果一切順利,它會編譯並運行生成以下條形圖:

JFree Chart

JPEG創建圖像

讓我們重新寫上面的例子中,使用命令行生成JPEG圖像。

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 );
   }
}

保存BarChart.java檔中如上面的Java代碼,然後從命令提示符下編譯並運行它,如下所示:

$javac BarChart.java
$java BarChart

如果一切順利,它會編譯並運行在當前的目錄中創建JPEG圖像檔namedBarChart.jpeg


上一篇: JFreeChart餅圖 下一篇: JFreeChart線型圖