JFreeChart:基本柱状图

    技术2022-05-20  35

     

    1. 简单柱状图

      首先为柱状图准备数据,柱状图必须使用CategoryDataset,这里我们使用DefaultCategoryDataset。

    DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100, "Spring Security", "Jan"); dataset.addValue(200, "jBPM 4", "Jan"); dataset.addValue(300, "Ext JS", "Jan"); dataset.addValue(400, "JFreeChart", "Jan"); 

      每调用一次addValue()就会向Dataset中添加一条数据,在图表中看来就是一个柱状矩形,第一个参数100是柱状矩形的长度,第二个参数表示数据的名称,,第三个参数表示数据的分类。

      有了图表数据,下一步使用这些数据创建一个柱状图表。

    JFreeChart chart = ChartFactory.createBarChart(   "chart",          // 标题   "num",           // 横轴名称   "type",           // 纵轴名称   dataset,          // 数据   PlotOrientation.VERTICAL,  // 使用垂直柱状图   true,            // 是否使用legend   false,           // 是否使用tooltip   false            // 是否使用url链接 ); 

      最后使用ChartUtilities将chart导出为PNG图片。

    FileOutputStream fos = null;  try {   fos = new FileOutputStream("target/bar1.png");   ChartUtilities.writeChartAsPNG(fos, chart, 400, 300); } finally {   fos.close(); } 

                              图 2.1. 简单柱状图

      完整代码如下所示:

    DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100, "Spring Security", "Jan"); dataset.addValue(200, "jBPM 4", "Jan"); dataset.addValue(300, "Ext JS", "Jan"); dataset.addValue(400, "JFreeChart", "Jan");  JFreeChart chart = ChartFactory.createBarChart("chart", "num",     "type", dataset, PlotOrientation.VERTICAL, true, false,     false); FileOutputStream fos = null;  try {   fos = new FileOutputStream("target/bar1.png");   ChartUtilities.writeChartAsPNG(fos, chart, 400, 300); } finally {   fos.close(); } 

     

     

    2. 水平柱状图

      把PlotOrientation.VERTICAL改成PlotOrientation.HORIZONTAL,柱状图就从竖直的变成了水平的。

                            图 2.2. 水平柱状图

     

    3. 三维柱状图

      使用createBarChart3D就会生成三维柱状图。

     

                                     图 2.3. 三维柱状图

     

     

    4. 分组柱状图

      DefaultCategoryDataset支持分组统计,我们只需要在addValue()时为数据指定分组类型,显示柱状图时会自动根据类别分组显示。

    dataset.addValue(100, "Spring Security", "Jan"); dataset.addValue(200, "jBPM 4", "Jan"); dataset.addValue(300, "Ext JS", "Jan"); dataset.addValue(100, "JFreeChart", "Jan"); dataset.addValue(60, "Spring Security", "Fer"); dataset.addValue(100, "jBPM 4", "Fer"); dataset.addValue(340, "Ext JS", "Fer"); dataset.addValue(130, "JFreeChart", "Fer"); 

                                      图 2.4. 分组柱状图

     

    5. 负向坐标

      为dataset添加一个负值,就可以在图标上显示出负向坐标了。

    dataset.addValue(-20, "Ext JS", "Jan"); 

     


    最新回复(0)