jfreeChar制作图表

jfreeChar制作图表
jfreechart使用总结
       jfreechart是一个基于java类制作图表的第三方类库,因为它的文档是收费的,所以在网上很少能找到,下面的代码使用了jfreecart的类库,如果想用的可以到网上下载.
        以下是我在网上收集的一些代码.
       
        // 柱图
public JFreeChart barChart(Fina fina) {
   JFreeChart chart = null;
   DefaultCategoryDataset dataset = new DefaultCategoryDataset();// 构造一个柱图对象
   List list = new ArrayList();

   // list = fdao.groupByName(fina);
   Object[] object1 = new Object[4];
   object1[0] = new Integer(30);
   object1[1] = new Integer(45);
   object1[2] = new Integer(34);
   object1[3] = "wang";
   Object[] object2 = new Object[4];
   object2[0] = new Integer(234);
   object2[1] = new Integer(54);
   object2[2] = new Integer(90);
   object2[3] = "zhao";

   list.add(object1);
   list.add(object2);
   for (Iterator ite = list.iterator(); ite.hasNext();) {
    Object[] obj = (Object[]) ite.next();
    dataset.addValue((Number) obj[0], "收入", (Comparable) obj[3]);// 添加一个柱
    dataset.addValue((Number) obj[1], "支出", (Comparable) obj[3]);
    dataset.addValue((Number) obj[2], "总计", (Comparable) obj[3]);
   }
   chart = ChartFactory.createBarChart3D("柱状图表", // 图表标题
     "用户", // 目录轴的显示标签
     "金额", // 数值轴的显示标签
     dataset, // 数据集
     PlotOrientation.VERTICAL, // 图表方向:水平、垂直
     true, // 是否显示图例(对于简单的柱状图必须是false)
     true, // 是否生成工具
     true // 是否生成URL链接
     );
   CategoryPlot plot = chart.getCategoryPlot();
   plot.setBackgroundPaint(Color.lightGray);// 背景色
   plot.setDomainGridlinePaint(Color.white);// 垂直线色
   plot.setDomainGridlinesVisible(true);
   plot.setRangeGridlinePaint(Color.white);// 水平线色
   NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
  
   rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
  
   BarRenderer renderer = (BarRenderer) plot.getRenderer();
  
   renderer.setDrawBarOutline(true);
   GradientPaint gp0 = new GradientPaint(0.0F, 0.0F, Color.green, 0.0F,
     0.0F, new Color(0, 0, 64));
   GradientPaint gp1 = new GradientPaint(0.0F, 0.0F, Color.yellow, 0.0F,
     0.0F, new Color(0, 64, 0));
   GradientPaint gp2 = new GradientPaint(0.0F, 0.0F, Color.red, 0.0F,
     0.0F, new Color(64, 0, 0));
   renderer.setSeriesPaint(0, gp0);// 设置第一柱颜色
   renderer.setSeriesPaint(1, gp1);
   renderer.setSeriesPaint(2, gp2);
   CategoryAxis domainAxis = plot.getDomainAxis();
   domainAxis.setCategoryLabelPositions(CategoryLabelPositions
     .createUpRotationLabelPositions(0.5235987755982988));
   return chart;
}

// 饼图
public JFreeChart pieChart(Fina fina) {
   JFreeChart chart = null;
   DefaultPieDataset dataset = new DefaultPieDataset();
   List list = new ArrayList();

   // list = fdao.groupByName(fina);
   Object[] object1 = new Object[4];
   object1[0] = new Integer(30);
   object1[1] = new Integer(45);
   object1[2] = new Integer(34);
   object1[3] = "wang";
   Object[] object2 = new Object[4];
   object2[0] = new Integer(234);
   object2[1] = new Integer(54);
   object2[2] = new Integer(90);
   object2[3] = "zhao";
   list.add(object1);
   list.add(object2);
   for (Iterator iter = list.iterator(); iter.hasNext();) {
    Object[] obj = (Object[]) iter.next();
    dataset.setValue((Comparable) obj[3], (Number) obj[2]);
   }
   chart = ChartFactory.createPieChart3D("饼图", // 图表标题
     dataset, true, // 是否显示图例
     false, false);
   return chart;
}

//折线图
public JFreeChart lineChart(Fina fina) {
   JFreeChart chart = null;
   DefaultCategoryDataset dataset = new DefaultCategoryDataset();
   List list = new ArrayList();
   Object[] object1 = new Object[4];
   object1[0] = new Integer(30);
   object1[1] = new Integer(45);
   object1[2] = new Integer(34);
   object1[3] = "wang";
   Object[] object2 = new Object[4];
   object2[0] = new Integer(234);
   object2[1] = new Integer(54);
   object2[2] = new Integer(90);
   object2[3] = "zhao";
   Object[] object3 = new Object[4];
   object3[0] = new Integer(234);
   object3[1] = new Integer(54);
   object3[2] = new Integer(90);
   object3[3] = "sun";
   list.add(object1);
   list.add(object2);
   list.add(object3);

   try {
    //list = fdao.groupByName(fina);
    for (Iterator iter = list.iterator(); iter.hasNext();) {
     Object[] obj = (Object[]) iter.next();
     dataset.addValue((Number) obj[0], "收入", (Comparable) obj[3]);
     //dataset.addValue((Number) obj[1], "支出", (Comparable) obj[3]);
     //dataset.addValue((Number) obj[2], "合计", (Comparable) obj[3]);
    }
    chart = ChartFactory.createLineChart("曲线图", "人员", "合计", dataset,
      PlotOrientation.VERTICAL, true,
      /** ************************** */
      true, false);

    chart.setBackgroundPaint(Color.white);// 背影色
    CategoryPlot categoryplot = (CategoryPlot) chart.getPlot();
    categoryplot.setBackgroundPaint(Color.LIGHT_GRAY);// 前景色
    categoryplot.setRangeGridlinePaint(Color.blue);// 底线色

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

    LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer) categoryplot
      .getRenderer();
    lineandshaperenderer.setShapesVisible(true);
    lineandshaperenderer.setDrawOutlines(true);
    lineandshaperenderer.setUseFillPaint(true);
    lineandshaperenderer.setFillPaint(Color.MAGENTA);// 点色

    /** **************************** */
    CategoryPlot plot = chart.getCategoryPlot();
    CategoryAxis domainAxis = plot.getDomainAxis();
    domainAxis.setCategoryLabelPositions(CategoryLabelPositions
      .createUpRotationLabelPositions(0.5235987755982988));
   } catch (HibernateException e) {

    e.printStackTrace();
   }
   return chart;
}


下面是如何在servlet或者在struts框架中调用的方法

// 柱图
public ActionForward barChart(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception {

   ActionMessages errors = new ActionMessages();
   FinaBO bo = new FinaBO();
   DynaValidatorForm df = (DynaValidatorForm) form;
   Fina fina = (Fina) df.get("fina");
   try {
    response.setContentType("image/jpeg");
    response.setHeader("Pragma", "No-cache");
    response.setHeader("Cache-Control", "no-cache");
    response.setDateHeader("Expires", 0);
    JFreeChart chart = bo.barChart(fina);

    ChartUtilities.writeChartAsJPEG(response.getOutputStream(), 1,
      chart, 800, 600, null);

   } catch (Exception e) {
    log.error(e);
    e.printStackTrace();
    errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
      "errors.u07exception"));
    saveErrors(request, errors);
    return mapping.findForward("errorPage");
   }
   return null;
}

// 饼图
    public ActionForward pieChart(ActionMapping mapping, ActionForm form,
      HttpServletRequest request, HttpServletResponse response)
      throws Exception {

     ActionMessages errors = new ActionMessages();
     //System.out.println(servlet.getServletContext().getRealPath(""));
     //System.out.println(request.getRealPath(""));
    
     FinaBO bo = new FinaBO();
     DynaValidatorForm df = (DynaValidatorForm) form;
     Fina fina = (Fina) df.get("fina");
     try {
      response.setContentType("image/jpeg");
      response.setHeader("Pragma", "No-cache");
      response.setHeader("Cache-Control", "no-cache");
      response.setDateHeader("Expires", 0);
      JFreeChart chart = bo.pieChart(fina);

      ChartUtilities.writeChartAsJPEG(response.getOutputStream(), 1,
        chart, 800, 600, null);

     } catch (Exception e) {
      log.error(e);
      e.printStackTrace();
      errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
        "errors.u07exception"));
      saveErrors(request, errors);
      return mapping.findForward("errorPage");
     }
     return null;
    }
    //曲线图
    public ActionForward lineChart(ActionMapping mapping, ActionForm form,
      HttpServletRequest request, HttpServletResponse response)
      throws Exception {

     ActionMessages errors = new ActionMessages();
     FinaBO bo = new FinaBO();
     DynaValidatorForm df = (DynaValidatorForm) form;
     Fina fina = (Fina) df.get("fina");
     try {
      response.setContentType("image/jpeg");
      response.setHeader("Pragma", "No-cache");
      response.setHeader("Cache-Control", "no-cache");
      response.setDateHeader("Expires", 0);
      JFreeChart chart = bo.lineChart(fina);

      ChartUtilities.writeChartAsJPEG(response.getOutputStream(), 1,
        chart, 800, 600, null);

     } catch (Exception e) {
      log.error(e);
      e.printStackTrace();
      errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
        "errors.u07exception"));
      saveErrors(request, errors);
      return mapping.findForward("errorPage");
     }
     return null;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值