学习JFreeChart类,编写了柱状图、饼图、甘特图,可以在DWZ中显示
来源:互联网 发布:2017高仿耐克淘宝店 编辑:程序博客网 时间:2024/05/01 03:48
首先需要一个jar包:jfreechart-1.0.9.jar .可以若不是maven项目你可以导包,若是在pom.xml中写入这个
<dependency> <groupId>jfree</groupId> <artifactId>jfreechart</artifactId> <version>1.0.9</version> </dependency>
然后:
jsp:
<BODY> <img src="<c:out value="${graphURL}" />" width=600 height=350 border=0 usemap="<c:out value="${filename}" />"></BODY>
controller层为:
/** * 饼图、柱状图等的显示控制器 * * @author sunny */@Controller@RequestMapping("/Chart")public class ChartController extends ControllerFather { /***************************************************** * 饼状图开始 */ private String CHART_PATH = "E:/jfreechart/";//用于保存图片路径 private String charName="pieChart.png"; @RequestMapping(value = "/pieChart") public ModelAndView pieChart(Model model, HttpServletRequest request, HttpServletResponse response) { //用于显示在饼图中的数据集 String[] keys = { "史亚妮", "李冰", "nini", "李开复", "马云", "其它" }; double[] data = { 42.2, 15, 13.5, 15.8, 8.2, 9.8 }; PieDataset pd = getPieDataSet(keys, data);//获取饼状图 数据集 // 利用工厂类来创建3D饼图 JFreeChart chart =ChartFactory.createPieChart3D("2011学生竞争力排名报告", pd, true, true, false); // 使下说明标签字体清晰,去锯齿类似于 // chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);的效果 chart.setTextAntiAlias(false); // 图片背景色 chart.setBackgroundPaint(Color.white); // 设置图标题的字体重新设置title(否组有些版本Title会出现乱码) chart.getTitle().setFont((new Font("隶书", Font.CENTER_BASELINE, 20))); // 设置图例(Legend)上的文字(//底部的字体) chart.getLegend().setItemFont(new Font("隶书", Font.CENTER_BASELINE, 15)); PiePlot3D plot = (PiePlot3D) chart.getPlot(); // 图片中显示百分比:默认方式 // 指定饼图轮廓线的颜色 plot.setBaseSectionOutlinePaint(Color.BLACK); plot.setBaseSectionPaint(Color.BLACK); // 设置无数据时的信息 plot.setNoDataMessage("无对应的数据,请重新查询。"); // 设置无数据时的信息显示颜色 plot.setNoDataMessagePaint(Color.red); // 图片中显示百分比:自定义方式,{0} 表示选项, {1} 表示数值, {2} 表示所占比例 ,小数点后两位 plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}={1}({2})", NumberFormat.getNumberInstance(), new DecimalFormat("0.00%"))); // 图例显示百分比:自定义方式, {0} 表示选项, {1} 表示数值, {2} 表示所占比例 plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator("{0}({2})")); plot.setLabelFont(new Font("隶书", Font.TRUETYPE_FONT, 12)); // 指定图片的透明度(0.0-1.0) plot.setForegroundAlpha(0.65f); // 指定显示的饼图上圆形(false)还椭圆形(true) plot.setCircular(false, true); // 设置第一个 饼块section 的开始位置,默认是12点钟方向 plot.setStartAngle(90); // 设置分饼颜色(不设置它会自己设置) // plot.setSectionPaint(pieKeys[0], new Color(244, 194, 144)); // plot.setSectionPaint(pieKeys[1], new Color(144, 233, 144)); // 把饼图生成图片 FileOutputStream fos_jpg = null; try { CHART_PATH="E:/winskysoft文档/CRM/CRM/src/main/webapp/images/"; System.out.println("所在路径:"+CHART_PATH); // 文件夹不存在则创建 isChartPathExist(CHART_PATH); String chartName = CHART_PATH + charName; fos_jpg = new FileOutputStream(chartName); // 高宽的设置影响椭圆饼图的形状 ChartUtilities.writeChartAsPNG(fos_jpg, chart, 700, 400); System.out.println(fos_jpg); } catch (Exception e) { e.printStackTrace(); return null; } finally { try { fos_jpg.close();//http://1wangxiaobo@163.com System.out.println("create pie-chart."); } catch (Exception e) { e.printStackTrace(); } } //传到页面上的路径 String filename = null; try { filename = ServletUtilities.saveChartAsPNG(chart, 600, 350, null, null); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename; ModelAndView view = new ModelAndView("pieChart.jsp");//这里的jsp地址就是上面那个jsp名字。 view.addObject("filename", filename); view.addObject("graphURL", graphURL); return view; } // 数值设置/** * 饼状图 数据集 */public static PieDataset getPieDataSet(String[] keys, double[] data) { if (keys != null && data != null) { if (keys.length == data.length) { DefaultPieDataset dataset = new DefaultPieDataset(); for (int i = 0; i < keys.length; i++) { dataset.setValue(keys[i], data[i]); } return dataset; } } return null;}/** * 判断文件夹是否存在,如果不存在则新建 * * @param chartPath */private static void isChartPathExist(String chartPath) { File file = new File(chartPath); if (!file.exists()) { file.mkdirs(); }}/*************************************** * 饼状图结束 *//****************************************************//**********甘特图开始8**********************************/@RequestMapping(value = "/ganttChart")public ModelAndView chart(Model model, HttpServletRequest request, HttpServletResponse response) { //甘特数据集 IntervalCategoryDataset dataset = createSampleDataset(); JFreeChart chart = ChartFactory.createGanttChart("任务管理系统", "任务各阶段详细实施计划", "任务周期", dataset, false, false, false); CategoryPlot plot=chart.getCategoryPlot(); chart.getTitle().setFont(new Font("新宋体",Font.BOLD,20)); CategoryAxis domainAxis=plot.getDomainAxis(); //水平底部列表 domainAxis.setLabelFont(new Font("新宋体",Font.BOLD,14)); //水平底部标题 domainAxis.setTickLabelFont(new Font("新宋体",Font.BOLD,12)); //垂直标题 ValueAxis rangeAxis = plot.getRangeAxis(); rangeAxis.setLabelFont(new Font("新宋体",Font.BOLD,16)); //用来控制时间轴的显示,防止乱码 DateAxis da = (DateAxis)plot.getRangeAxis(0); da.setDateFormatOverride(new SimpleDateFormat("yyyy-MM-dd")); //把甘特图写入电脑中 FileOutputStream fop = null; try{ System.out.println("Danny>> begin."); fop = new FileOutputStream("E:/jfreechart/gantt.jpg"); ChartUtilities.writeChartAsJPEG(fop,1f, chart, 800, 600,null); System.out.println("Danny>> end.."); System.out.println("Danny>> successful..."); } catch (IOException e){ e.printStackTrace(); } finally{ try{ fop.close(); } catch (IOException e){ e.printStackTrace(); } } //传路径 String filename = null; try { filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, null); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename; ModelAndView view = new ModelAndView("ganttChart.jsp"); view.addObject("filename", filename); view.addObject("graphURL", graphURL); return view;}/** *//** * Utility method for creating <code>Date</code> objects. * * @param day 日 * @param month 月 * @param year 年 * * @return a date. */private static Date date(final int day, final int month, final int year){ final Calendar calendar = Calendar.getInstance(); calendar.set(year, month, day); final Date result = calendar.getTime(); return result;}/** * * @return The dataset. */private static IntervalCategoryDataset createSampleDataset() { final TaskSeries s1 = new TaskSeries("SCHEDULE"); final Task t1 = new Task("任务1", date(1, Calendar.JANUARY, 2001), date(5, Calendar.APRIL, 2001)); t1.setPercentComplete(0.8); s1.add(t1); // 创建一个任务并插入两个子任务 final Task t3 = new Task("任务2", date(10, Calendar.APRIL, 2001), date(5, Calendar.MAY, 2001)); final Task st31 = new Task("需求1", date(10, Calendar.APRIL, 2001), date(25, Calendar.APRIL, 2001)); st31.setPercentComplete(0.50); final Task st32 = new Task("需求2", date(1, Calendar.MAY, 2001), date(5, Calendar.MAY, 2001)); st32.setPercentComplete(1.0); t3.addSubtask(st31); t3.addSubtask(st32); s1.add(t3); final Task t5 = new Task( "任务3", date(2, Calendar.JUNE, 2001), date(2, Calendar.JUNE, 2001)); s1.add(t5); final Task t6 = new Task("任务4", date(3, Calendar.MARCH, 2001), date(31, Calendar.JULY, 2001)); t6.setPercentComplete(0.60); s1.add(t6); final Task t8 = new Task("任务结束", date(10, Calendar.AUGUST, 2001), date(10, Calendar.AUGUST, 2001)); t8.setPercentComplete(0.0); s1.add(t8); final Task t9 = new Task("任务试用", date(12, Calendar.AUGUST, 2001), date(12, Calendar.SEPTEMBER, 2001)); t9.setPercentComplete(0.0); s1.add(t9); final Task t10 = new Task("任务测试", date(13, Calendar.SEPTEMBER, 2001), date(31, Calendar.OCTOBER, 2001)); t10.setPercentComplete(0.2); s1.add(t10); final Task t12 = new Task("全部结束", date(28, Calendar.NOVEMBER, 2001), date(30, Calendar.NOVEMBER, 2001)); t12.setPercentComplete(0.0); s1.add(t12); final TaskSeriesCollection collection = new TaskSeriesCollection(); collection.add(s1); return collection;}/****************************甘特图结束****************************/}
这里有饼图和甘特图
柱状图类似,就不一一列举啦
- 学习JFreeChart类,编写了柱状图、饼图、甘特图,可以在DWZ中显示
- JFreeChart在Struts2中实现柱状图统计
- JFreeChart中画柱状图
- jfreechart柱状图顶部显示数值?
- JFreeChart 在struts2中显示
- JFreeChart在Struts2中实现3D柱状图统计
- JFreeChart中文显示问题_柱状图
- JfreeChart连接数据库数据显示柱状图
- JFreeChart -- 柱状图实例解析 -- 设置显示属性
- JFreeChart -- 柱状图实例解析 -- 设置显示属性
- jfreechart生成柱状图,x轴间隔显示
- JFreeChart折线图,饼图,柱状图
- JFreeChart折线图,饼图,柱状图
- JFreeChart生成柱状图的类
- JfreeChart 在Struts2 web上显示柱状图并当鼠标经过是出现提示信息
- 使用jfreechart在jsp页面柱状图统计
- JFreeChart -- 柱状图
- jfreechart柱状图
- JavaScript实现x秒后自动跳转
- 使用easyUI创建XP风格左侧面板
- IE老提示“数字证书”过期/错误的解决方法
- spring的详细复习讲解
- view
- 学习JFreeChart类,编写了柱状图、饼图、甘特图,可以在DWZ中显示
- ListView 和TreeView控件相互拖拽
- Elecom公司推出首款NFC手机键盘
- 利用SQL语句创建、修改、执行、删除存储过程(简单应用)
- does not contain debug information. Press OK to Continue
- 制作u-boot.bin
- HDOJ1162Eddy's picture
- UML类图几种关系的总结
- 转载好文--完全接管遥控器(Total Remote Control)--