基本原理很简单,利用jfreechart生成对应图形的图片,然后在页面上显示出来。这种方式相对于flash组件形式最大的优点就是可以在所有平台上都正常显示。
前提:导入需要的2个jar文件,jcommon-版本号.jar,jfreechart-版本号.jar。
listCharts为自己需要显示数据的集合name为列名,count为列值。例如 Map<String, Object> map = null; while (rs.next()) { map = new HashMap<String, Object>(); map.put("name", rs.getString(1)); map.put("count", rs.getString(2)); list.add(map); } ///////////////正式代码: if(chartsType.equals("Column3D")){ DefaultCategoryDataset dataset=new DefaultCategoryDataset(); for (int i = 0; i < listCharts.size(); i++) { Map<String, Object> rsMap = listCharts.get(i); String key = (String)rsMap.get("name"); int value = Integer.parseInt((String) rsMap.get("count")); dataset.setValue(value,key,key); } JFreeChart chart=ChartFactory.createBarChart("hi", "","报警数(条)", dataset, PlotOrientation.VERTICAL, true, true, false); //创建一个JFreeChart if(alarmType.equals("alarmTypeAll")){ chart.setTitle(new TextTitle("报警类型--报警信息统计图",new Font("宋体",Font.BOLD+Font.ITALIC,20)));//可以重新设置标题,替换“hi”标题 } else{ chart.setTitle(new TextTitle(""+alarmType+"--报警信息统计图",new Font("宋体",Font.BOLD+Font.ITALIC,20)));//可以重新设置标题,替换“hi”标题 } CategoryPlot plot = chart.getCategoryPlot(); CategoryAxis categoryAxis=plot.getDomainAxis();//获得横坐标 categoryAxis.setLabelFont(new Font("微软雅黑",Font.BOLD,12));//设置横坐标字体 plot.setBackgroundPaint(Color.white); // 柱状图的背景 plot.setRangeGridlinesVisible(true); // 横虚线是否可见 plot.setForegroundAlpha(0.65f); // 前北京透明度设置 plot.setRangeGridlinePaint(Color.gray); // 设置横虚线的颜色 //可以控制柱图的位置,但是不能把显示的数据置顶。 LayeredBarRenderer renderer = new LayeredBarRenderer(); //不可以控制柱图的位置,可以把显示的数据置顶。 //BarRenderer renderer = new BarRenderer(); renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());//显示每个柱的数值 renderer.setBaseItemLabelsVisible(true); renderer.setMaximumBarWidth(100); // 设置柱状的宽度 renderer.setBase(0.01); renderer.setDrawBarOutline(true); // 设置边框是否可见 renderer.setBaseOutlinePaint(Color.blue); // 设置边框的颜色 renderer.setSeriesPaint(0, Color.blue); // 第一种柱状的颜色 renderer.setSeriesPaint(1, Color.orange); // 第二种柱状的颜色 renderer.setSeriesPaint(2, Color.gray); // 第三种柱状的颜色 renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER)); //偏移量 renderer.setItemLabelAnchorOffset(-50.0f); // 这里设置柱状图 数值 renderer.setItemMargin(0.05D); // 文字的设置 CategoryAxis domainAxis = plot.getDomainAxis(); //domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); domainAxis.setVisible(true); plot.setDomainAxis(domainAxis); ValueAxis rAxis = plot.getRangeAxis(); // 设置标题的文字 TextTitle textTitle = chart.getTitle(); textTitle.setFont(new Font("宋体", Font.PLAIN, 12)); // 设置X轴坐标上的文字 domainAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 10)); // 设置X轴的标题文字 domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12)); // 设置Y轴坐标上的文字 rAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 10)); // 设置Y轴的标题文字 rAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12)); rAxis.setUpperMargin(0.1);//设置高度,能完全显示数据。 domainAxis.setUpperMargin(0.1);// 左右两边靠边框 domainAxis.setLowerMargin(0.1); //domainAxis.setCategoryLabelPositionOffset(4); plot.setNoDataMessage("no data"); plot.setNoDataMessagePaint(Color.blue); //LayeredBarRenderer lbr = new LayeredBarRenderer();//(BarRenderer)类: // 给图添加呈现器 renderer.setSeriesBarWidth(1, 0.5);//控制位置 plot.setRenderer(renderer); int filename =(int)(Math.random()*10000);//产生0-1000的整数随机数 OutputStream os = new FileOutputStream("company.jpeg");//图片是文件格式的,故要用到FileOutputStream用来输出。 ChartUtilities.saveChartAsJPEG(new File("C:\\apache-tomcat-6.0.35\\webapps\\Crt\\jfreepic\\"+filename+".jpeg"), chart, 1000, 400); //使用一个面向application的工具类,将chart转换成JPEG格式的图片。第3个参数是宽度,第4个参数是高度。 os.close();//关闭输出流 //使用一个面向application的工具类,将chart转换成JPEG格式的图片。第3个参数是宽度,第4个参数是高度。 JSONArray jArray = new JSONArray(); JSONObject jObject = new JSONObject(); jObject.put("fimename",filename); jArray.add(jObject); System.out.print(jArray.toString()); PrintWriter out; try { out = response.getWriter(); out.write(jArray.toString()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else if(chartsType.equals("Pie3D")){//扇形图 DefaultPieDataset dpd=new DefaultPieDataset(); //建立一个默认的饼图 for (int i = 0; i < listCharts.size(); i++) { Map<String, Object> rsMap = listCharts.get(i); String key = (String)rsMap.get("name"); int value = Integer.parseInt((String) rsMap.get("count")); dpd.setValue(key,value); //输入数据 } JFreeChart chart = null; if(alarmType.equals("alarmTypeAll")){ chart=ChartFactory.createPieChart("报警类型--报警信息统计图",dpd,true,true,false); } else{ chart=ChartFactory.createPieChart(""+alarmType+"--报警信息统计图",dpd,true,true,false); } //chart.setTitle(new TextTitle("报警信息统计图",new Font("微软雅黑",Font.BOLD,12))); LegendTitle legend=chart.getLegend(0);//设置Legend legend.setItemFont(new Font("宋体",Font.BOLD,14)); PiePlot plot=(PiePlot) chart.getPlot();//设置Plot plot.setLabelFont(new Font("隶书",Font.BOLD,16)); plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{1}")); OutputStream os = new FileOutputStream("company.jpeg");//图片是文件格式的,故要用到FileOutputStream用来输出。 int filename =(int)(Math.random()*10000);//产生0-1000的整数随机数 ChartUtilities.saveChartAsJPEG(new File("C:\\apache-tomcat-6.0.35\\webapps\\Crt\\jfreepic\\"+filename+".jpeg"), chart, 1000,400); //使用一个面向application的工具类,将chart转换成JPEG格式的图片。第3个参数是宽度,第4个参数是高度。 os.close();//关闭输出流 }
相关推荐
首先,我们来了解一下如何使用JFreeChart生成饼图。饼图是一种直观地表示各部分与整体之间比例关系的图形。在JFreeChart中,我们可以使用`PieChart`类来创建饼图。需要定义数据集,通常是`DefaultPieDataset`,然后...
在Java Web开发中,JFreeChart是一个非常强大的库,它允许开发者创建各种类型的图表,包括条形图(Bar Chart)、饼状图(Pie Chart)和折线图(Line Chart)。这些图表可以用于数据可视化,帮助用户更好地理解复杂的...
JFreeChart是一款强大的Java库,它为开发者提供了丰富的图表生成能力,可以用于创建各种复杂的统计图表,包括饼状图、折线图、条形图等。在这个代码压缩包中,"DrawPic"可能是包含实现这些功能的源代码或示例程序。 ...
本案例中,我们将探讨如何利用JFreeChart实现一个图形混合的实例,包括条形图和线图的结合。 首先,我们创建一个名为`CombineChart02`的类,这是实现报表图形的核心。在这个类中,我们主要关注如何构建`...
你可以通过研究这些文件来进一步理解如何在实际项目中应用JFreeChart生成甘特图。 总的来说,使用JFreeChart在JSP页面上实现甘特图涉及数据库交互、数据处理、图表生成和页面渲染等多个环节。通过熟练掌握这些步骤...
本文将通过示例代码,详细介绍如何使用JFreeChart生成几种典型的图表,并设置图表的属性。 #### 一、CategoryDataset:用于柱状图、折线图等 `CategoryDataset`是JFreeChart中一种非常基础的数据集类型,适用于...
### JFreeChart中文API开发柱形图,饼图,条形图详解 #### 概述 JFreeChart是一款开源的...通过上述API,开发者可以全面地定制JFreeChart生成的图表,无论是基础外观还是细节调整,都能满足各种数据可视化场景的需求。
1. **多样的图表类型**:JFreeChart 支持多种图表类型,包括但不限于饼图、条形图、线图、面积图、甘特图、雷达图、热力图、散点图等,能够适应各种数据可视化需求。 2. **自定义能力**:用户可以根据需要自定义...
使用Java与JFreeChart生成堆积图 #### 3.1 数据准备 在生成堆积图之前,首先需要准备数据。数据通常以二维数组的形式存储,每一行代表一个分类,每一列代表该分类下的不同系列数据。例如,在给定的部分内容中,`...
JFreeChart 是一个广泛使用的 Java 库,它为 Java 开发者提供了创建各种图表的能力,包括柱状图、饼图、条形图以及线形图等多种图表类型。这个开源项目是免费的,且允许在商业应用中使用,对于数据分析、报表生成...
`demo.jsp`和`demo2.jsp`两个文件可能包含了使用JFreeChart生成图表并嵌入到网页的具体代码示例。通常,JSP页面会通过后台Java代码生成图表,然后将生成的图片流返回给前端展示。 **五、代码实现关键点** 1. **...
<TITLE>JFreeChart 简单的例子 <H2>JFreeChart: 简单的例子 ...--跳转到ServletDemo1生成条形统计图--> 可以选择统计图类型 href="chart1.html">三种类型 <!--链接到chart1.html--> </HTML>
JFreeChart提供了垂直柱状图和水平柱状图,可以通过设置条形的颜色、宽度、透明度等属性来美化图表。此外,还可以添加工具提示和URL链接,为用户提供更多信息。 除了饼图和柱状图,JFreeChart还支持线形图,这在...
本项目提供了一个实例,展示了如何在Web页面上使用JFreeChart生成和显示这些图表。 首先,我们来详细了解一下JFreeChart库。JFreeChart是由David Gilbert开发的一个开源项目,它支持生成各种复杂的2D图表,如折线图...
JFreeChart支持多种类型的图表,包括条形图、线形图、饼图、散点图、甘特图、面积图、雷达图、热力图等。这些图表可以是2D或3D形式,且可以自定义颜色、样式、标签等细节,以满足不同的视觉需求。 1. **条形图(Bar...
此外,JFreeChart生成的图表可以直接在Web应用程序中显示,只需将图表对象嵌入到Servlet或JSP页面中即可。 #### 结论 JFreeChart作为一款成熟的Java图表库,为报表图开发提供了强大的支持。无论是基础的条形图、...
甘特图是一种特殊类型的条形图,用于展示项目计划和进度。JFreeChart支持创建甘特图,并可以调整样式和外观。 **2.12 多轴图表** 多轴图表可以在同一张图表中展示多个具有不同量纲的数据系列。JFreeChart支持创建...