JFreeChart

Posted LoveDonkey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JFreeChart相关的知识,希望对你有一定的参考价值。

星朝博客:jFreeChart利用CategoryDatase,ChartFactory.createBarChart生成的柱状图

/**
     * 创建JFreeChart Bar Chart(柱状图)
     */
    public static void main(String[] args) 
        //步骤1:创建CategoryDataset对象(准备数据)
        CategoryDataset dataset = createDataset();
        //步骤2:根据Dataset 生成JFreeChart对象,以及做相应的设置
        JFreeChart freeChart = createChart(dataset);
        //步骤3:将JFreeChart对象输出到文件,Servlet输出流等
        saveAsFile(freeChart, "D:\\\\资料\\\\bar.png", 500, 400);
    

    // 创建CategoryDataset对象
    public static CategoryDataset createDataset() 

        String []rowKeys = "One", "Two", "Three";
        String []colKeys = "1987", "1997", "2007";

        double [][] data = 
                100, 20, 50,
                20, 10.5, 40,
                40, 30.0008, 38.24,
        ;

        //也可以使用以下代码
        DefaultCategoryDataset categoryDataset = new DefaultCategoryDataset();
        categoryDataset.addValue(688, "小a", "sum");
        categoryDataset.addValue(600, "小b", "sum");
        categoryDataset.addValue(95, "小a", "avg");
        categoryDataset.addValue(80, "小b", "avg");

//        return DatasetUtilities.createCategoryDataset(rowKeys, colKeys, data);
        return categoryDataset;
    

    //根据CategoryDataset生成JFreeChart对象
    public static JFreeChart createChart(CategoryDataset categoryDataset) 
        JFreeChart jfreechart = ChartFactory.createBarChart("测试表",    //标题
                "ss",    //categoryAxisLabel (category轴,横轴,X轴的标签)
                "aa",    //valueAxisLabel(value轴,纵轴,Y轴的标签)
                categoryDataset, // dataset
                PlotOrientation.VERTICAL,
                true, // legend
                false, // tooltips
                false); // URLs

        Font font = new Font("新宋体", Font.BOLD, 15);

        //设置整个图片的标题字体
        jfreechart.getTitle().setFont(font);

        jfreechart.getLegend().setItemFont(font);

        //以下的设置可以由用户定制,也可以省略
        CategoryPlot  plot = (CategoryPlot) jfreechart.getPlot();
        //背景色 透明度
        plot.setBackgroundAlpha(1f);
        //前景色 透明度
        plot.setForegroundAlpha(1f);
        //其它设置可以参考 CategoryPlot

        return jfreechart;
    

    //保存为文件
    public static void saveAsFile(JFreeChart chart, String outputPath, int weight, int height) 
        FileOutputStream out = null;
        try 
            File outFile = new File(outputPath);
            if (!outFile.getParentFile().exists()) 
                outFile.getParentFile().mkdirs();
            
            out = new FileOutputStream(outputPath);
            //保存为PNG文件
            ChartUtilities.writeChartAsPNG(out, chart, weight, height);
            //保存为JPEG文件
            //ChartUtilities.writeChartAsJPEG(out, chart, weight, height);
            out.flush();
         catch (FileNotFoundException e) 
            e.printStackTrace();
         catch (IOException e) 
            e.printStackTrace();
         finally 
            if (out != null) 
                try 
                    out.close();
                 catch (IOException e) 
                    //do nothing
                
            
        
    

 

以上是关于JFreeChart的主要内容,如果未能解决你的问题,请参考以下文章

菜鸟学JFreeChart-初学JFreeChart

JFreeChart 之折线图

JFreeChart 之柱状图

JFreeChart的使用

JFreeChart - Java 内存泄漏

JFreeChart