JFreeChart使用示例(入门级)

最近有个作业要用到JFreeChart,可是上网查了查却发现这方面的资料很少,而且几乎都是雷同的,不适合初学者学习。

JFreeChart功能特别强大,我仅仅也是刚刚掌握了点皮毛。

下面我把我的代码贴上来,作为一个入门级的示例,希望能给初学者一点小小的帮助。。。



import java.awt.Color;
import java.awt.Font;
import java.io.File;
import java.io.FileOutputStream;
import java.text.DecimalFormat;
import java.text.NumberFormat;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAnchor;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;

public class drawpie {
	public static void drawit(int[] a, String t) {
		PieDataset dataset = getDataSet(a);
		JFreeChart chart = ChartFactory.createPieChart3D("成绩统计图", dataset,true, true, false);
		PiePlot3D plot = (PiePlot3D) chart.getPlot();
		// 图片中显示百分比:自定义方式,{0} 表示选项, {1} 表示数值, {2} 表示所占比例 ,小数点后两位
		plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}={1}({2})", NumberFormat.getNumberInstance(),
				new DecimalFormat("0.00%")));
		// 图例显示百分比:自定义方式, {0} 表示选项, {1} 表示数值, {2} 表示所占比例
		plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator(
				"{0}={1}({2})"));
		// 设置背景色为白色
		chart.setBackgroundPaint(Color.white);
		// 指定图片的透明度(0.0-1.0)
		plot.setForegroundAlpha(1.0f);
		// 指定显示的饼图上圆形(false)还椭圆形(true)
		plot.setCircular(true);
		// 设置图标题的字体
		Font font = new Font("幼圆", Font.CENTER_BASELINE, 10);
		TextTitle title = new TextTitle(t);
		title.setFont(font);
		// 设置字体,非常关键不然会出现乱码的,下方的字体
		chart.getLegend().setItemFont(font);
		// 设置图片的地址Pie图的字体
		plot.setLabelFont(font);
		chart.setTitle(title);
		FileOutputStream fos_jpg = null;
		try {
                        File file=new File("img");
                        if(!file.exists())
                        {
                            file.mkdir();
                        }
			fos_jpg = new FileOutputStream("img\\"+t+".jpg");
			ChartUtilities.writeChartAsJPEG(fos_jpg, 1, chart, 296, 221, null);
			fos_jpg.close();
		} catch (Exception e) {
		}
	}

	private static PieDataset getDataSet(int[] a) {
		DefaultPieDataset dataset = new DefaultPieDataset();
		dataset.setValue("优秀",a[0]);
		dataset.setValue("良好",a[1]);
		dataset.setValue("中等",a[2]);
		dataset.setValue("及格",a[3]);
		dataset.setValue("不及格",a[4]);
		return dataset;
	}
        public static void drawchart(int[][] b,String name)
        {
            CategoryDataset ds =getchartDataSet(b);
            JFreeChart chart = ChartFactory.createBarChart3D(
                "学生成绩统计图", //图表标题
                "分类", //目录轴的显示标签
                "人数", //数值轴的显示标签
                ds, //数据集
                PlotOrientation.VERTICAL, //图表方向
                true, //是否显示图例,对于简单的柱状图必须为false
                false, //是否生成提示工具
                false);         //是否生成url链接

        CategoryPlot categoryplot = (CategoryPlot) chart.getPlot();

        NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis();

        CategoryAxis domainAxis = categoryplot.getDomainAxis();

        /*------设置X轴坐标上的文字-----------*/
        domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11));

        /*------设置X轴的标题文字------------*/
        domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));

        /*------设置Y轴坐标上的文字-----------*/
        numberaxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));

        /*------设置Y轴的标题文字------------*/
        numberaxis.setLabelFont(new Font("黑体", Font.PLAIN, 12));

        /*------这句代码解决了底部汉字乱码的问题-----------*/
        chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));

        FileOutputStream fos_jpg = null;
		try {
                        File file=new File("img");
                        if(!file.exists())
                        {
                            file.mkdir();
                        }
			fos_jpg = new FileOutputStream("img\\"+name+".jpg");
			ChartUtilities.writeChartAsJPEG(fos_jpg, 1, chart, 392, 221, null);
			fos_jpg.close();
		} catch (Exception e) {
		}
    }
    private static CategoryDataset getchartDataSet(int[][] b) {
        DefaultCategoryDataset ds = new DefaultCategoryDataset();
        ds.addValue(b[0][0], "优秀", "数学成绩");
        ds.addValue(b[0][1], "良好", "数学成绩");
        ds.addValue(b[0][2], "中等", "数学成绩");
        ds.addValue(b[0][3], "及格", "数学成绩");
        ds.addValue(b[0][4], "不及格", "数学成绩");
        ds.addValue(b[1][0], "优秀", "英语成绩");
        ds.addValue(b[1][1], "良好", "英语成绩");
        ds.addValue(b[1][2], "中等", "英语成绩");
        ds.addValue(b[1][3], "及格", "英语成绩");
        ds.addValue(b[1][4], "不及格", "英语成绩");
        ds.addValue(b[2][0], "优秀", "政治成绩");
        ds.addValue(b[2][1], "良好", "政治成绩");
        ds.addValue(b[2][2], "中等", "政治成绩");
        ds.addValue(b[2][3], "及格", "政治成绩");
        ds.addValue(b[2][4], "不及格", "政治成绩");
        ds.addValue(b[3][0], "优秀", "专业课成绩");
        ds.addValue(b[3][1], "良好", "专业课成绩");
        ds.addValue(b[3][2], "中等", "专业课成绩");
        ds.addValue(b[3][3], "及格", "专业课成绩");
        ds.addValue(b[3][4], "不及格", "专业课成绩");
        ds.addValue(b[4][0], "优秀", "平均成绩");
        ds.addValue(b[4][1], "良好", "平均成绩");
        ds.addValue(b[4][2], "中等", "平均成绩");
        ds.addValue(b[4][3], "及格", "平均成绩");
        ds.addValue(b[4][4], "不及格", "平均成绩");
        return ds;
    }
}


你可能感兴趣的:(java,jfreechart,图片,示例,初级)