JFreeChart使用示例(入门级)

来源:互联网 发布:阿里云选择镜像 编辑:程序博客网 时间:2024/06/04 18:11

最近有个作业要用到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;    }}


原创粉丝点击