JFreeChat_01

今天学习一下JFreeChat

准备工作下载包

JFreeChart主页:http://www.jfree.org/jfreechart/index.html
JFreeChart下载页面:http://sourceforge.net/projects/jfreechart/

然后写个简单的测试类

package com.ll.JFreeChat.Demo1;

import java.io.FileOutputStream;
import java.io.IOException;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
/**
* 该类用于演示最简单的柱状图生成
* @author Mr liu
*/
public class Demo1 {
public static void main(String[] args) throws IOException{
    CategoryDataset dataset=getDataSet2();
    JFreeChart chart=ChartFactory.createBarChart3D(
            "水果产量图",//图标标题
            "水果",//目录轴的显示标签
            "产量",//数值轴的显示标签
            dataset,//数据集
            PlotOrientation.VERTICAL,//图表的方向:水平、垂直
            true,//是否显示图例(对于简单的柱状图必须是false)
            false,//是否生成工具
            false//是否生成URL链接
            );
    FileOutputStream fos_jpg=null;
    try{
        fos_jpg=new FileOutputStream("D:\\fruit.jpg");
        ChartUtilities.writeChartAsJPEG(fos_jpg,100,chart,400,300,null);
    }finally{
        try{
            fos_jpg.close();
        }catch(Exception e){}
    }
    
    
}

/**
 * 获取一个演示用的简单数据集对象
 * @return
 */
private static CategoryDataset getDataSet(){
    DefaultCategoryDataset dataset=new DefaultCategoryDataset();
    dataset.addValue(100, null, "苹果");
    dataset.addValue(200, null, "梨子");
    dataset.addValue(300, null, "葡萄");
    dataset.addValue(400, null, "香蕉");
    dataset.addValue(500, null, "栗子");
    return dataset;
}
/**
 * 获取一个演示用的组合数据集对象
 * @return
 */
private static CategoryDataset getDataSet2(){
    DefaultCategoryDataset dataset=new DefaultCategoryDataset();
    dataset.addValue(100, "北京", "苹果");
    dataset.addValue(100, "上海", "苹果");
    dataset.addValue(100, "广州", "苹果");
    dataset.addValue(200, "北京", "梨子");
    dataset.addValue(200, "上海", "梨子");
    dataset.addValue(200, "广州", "梨子");
    dataset.addValue(300, "北京", "葡萄");
    dataset.addValue(300, "上海", "葡萄");
    dataset.addValue(300, "广州", "葡萄");
    dataset.addValue(400, "北京", "香蕉");
    dataset.addValue(400, "上海", "香蕉");
    dataset.addValue(400, "广州", "香蕉");
    dataset.addValue(500, "北京", "荔枝");
    dataset.addValue(500, "上海", "荔枝");
    dataset.addValue(500, "广州", "荔枝");
    return dataset;
}

}


写了一个很简单的案例,但出现了几个问题

问题一

The 'quality' must be in the range 0.0f to 1.0f 

报这样的错误,如何改正呢

这是因为ChartUtilities.writeChartAsJPEG(res.getOutputStream(),100,chart,graphWidth,graphHigh,null); 

限制quality必须小于等于1,所以修改一下 

把100改成 1.0f就可以显示了

问题二

生成的图,汉字不显示

这个和JFreeChat的版本有关系,我之前用的是1.0.16,换成1.0.7就可以了,其它版本应该也可以,自己多试试

问题三

我把CategoryDataset dataset=getDataSet();换成第一个数据集,结果就报这样的错误

Exception in thread "main" java.lang.IllegalArgumentException: Null 'key' argument.

其实很简单就是我这里面有的数据是null,它不允许,改成"",就可以了


你可能感兴趣的:(JFreeChat_01)