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; } |
jfreeChar制作图表
最新推荐文章于 2018-07-31 16:24:36 发布