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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在一个图中显示关联的散点图和直方图,可以使用JFreeChart库中的CombinedDomainXYPlot和CombinedDomainXYPlot类。下面是一个简单的示例代码,展示如何将散点图和直方图组合到一个图中: ```java //创建数据集 XYSeriesCollection scatterDataset = new XYSeriesCollection(); XYSeries scatterSeries = new XYSeries("Scatter Plot"); scatterSeries.add(1.0, 1.0); scatterSeries.add(2.0, 2.0); scatterSeries.add(3.0, 3.0); scatterDataset.addSeries(scatterSeries); HistogramDataset histogramDataset = new HistogramDataset(); double[] values = {1.0, 2.0, 2.5, 3.0, 3.5}; histogramDataset.addSeries("Histogram", values, 5, 1.0, 4.0); //创建散点图 XYPlot scatterPlot = new XYPlot(scatterDataset, new NumberAxis("X"), new NumberAxis("Y"), new XYLineAndShapeRenderer(true, false)); //创建直方图 XYPlot histogramPlot = new XYPlot(histogramDataset, new NumberAxis("X"), new NumberAxis("Frequency"), new XYBarRenderer()); //将散点图和直方图组合到一个图中 CombinedDomainXYPlot plot = new CombinedDomainXYPlot(new NumberAxis("X")); plot.add(scatterPlot, 1); plot.add(histogramPlot, 1); //创建图表并显示 JFreeChart chart = new JFreeChart("Scatter Plot and Histogram", plot); ChartFrame frame = new ChartFrame("Chart", chart); frame.pack(); frame.setVisible(true); ``` 在上面的代码中,首先创建一个散点图和一个直方图的数据集,然后分别创建了散点图和直方图的XYPlot,并将它们组合到一个CombinedDomainXYPlot中。最后,使用CombinedDomainXYPlot创建一个JFreeChart对象,并将其显示出来。 上述示例代码中,使用了默认的渲染器,如果需要更改渲染器的属性,可以通过获取XYPlot对象,并对其渲染器进行设置来完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值