JFreeChart条形图


本章演示如何使用JFreeChart 从一组给定的业务数据创建 条形图

条形图使用不同的方向(水平或垂直)条显示各种类别的比较。图表的一个轴(域轴)显示正在比较的特定域,而另一个轴(范围轴)表示离散值。

业务数据

以下示例在条形图的帮助下描述了各种汽车统计数据。以下是汽车品牌及其不同特征的列表,我们将使用条形图显示 -

汽车 速度 用户评分 Millage 安全
**菲亚特** 1.0 3.0 5 5
**奥迪** 5 6 10.0 4
**涉** 4 2.0 3.0 6

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

让我们将上面的Java代码保存在 BarChart_AWT.java 文件中,然后从提示的命令中编译并运行它 -

$javac BarChar_AWT.java  
$java BarChart_AWT

如果一切正常,它将编译并运行以生成以下条形图 -

JFree图表

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

让我们将上述Java代码保存在BarChart.java文件中,然后从提示的命令中编译并运行它

$javac BarChart.java  
$java BarChart

如果一切正常,它将编译并运行以在当前目录中创建一个名为 BarChart.jpeg 的JPEG图像文件。