当前位置: 首页 > 教程 > JFreeChart >

JFreeChart 条形图

精华
小牛编辑
197浏览
2023-03-14

什么是JFreeChart 条形图

条形图是用矩形表示分组数据的图表。条形的高度或长度是代表条形的值的命题。

下图显示了 JFreeChart 库中包含的一些条形图的演示版本:

JFreeChart 条形图的示例

让我们以人口数量作为样本数据。

年份 美国(百万) 中国(百万) 印度(百万)
2005年 10 15 20
2010年 15 20 25
2015年 20 25 30

以下代码根据上述示例数据创建饼图: 

package cn.xnip;

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 javax.swing.*;

public class BarChartExample extends JFrame {  
  
  private static final long serialVersionUID = 1L;  
  
  public BarChartExample(String appTitle) {  
    super(appTitle);  
  
    // Create Dataset  
    CategoryDataset dataset = createDataset();  
      
    //Create chart  
    JFreeChart chart= ChartFactory.createBarChart(  
        "Bar Chart Example", //Chart Title  
        "Year", // Category axis  
        "Population in Million", // Value axis  
        dataset,  
        PlotOrientation.VERTICAL,  
        true,true,false  
       );  
  
    ChartPanel panel=new ChartPanel(chart);  
    setContentPane(panel);  
  }  
  
  private CategoryDataset createDataset() {  
    DefaultCategoryDataset dataset = new DefaultCategoryDataset();  
  
    // Population in 2005  
    dataset.addValue(10, "USA", "2005");  
    dataset.addValue(15, "India", "2005");  
    dataset.addValue(20, "China", "2005");  
  
    // Population in 2010  
    dataset.addValue(15, "USA", "2010");  
    dataset.addValue(20, "India", "2010");  
    dataset.addValue(25, "China", "2010");  
  
    // Population in 2015  
    dataset.addValue(20, "USA", "2015");  
    dataset.addValue(25, "India", "2015");  
    dataset.addValue(30, "China", "2015");  
  
    return dataset;  
  }  
  
  public static void main(String[] args) throws Exception {  
    SwingUtilities.invokeAndWait(()->{  
      BarChartExample example=new BarChartExample("小牛知识库网:Bar Chart Window");  
      example.setSize(800, 400);  
      example.setLocationRelativeTo(null);  
      example.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);  
      example.setVisible(true);  
    });  
  }  
}  

输出结果为: