摘要:上节主要介绍了用servlet代码来实现条形图,本节主要接着上节介绍用jsp代码来实现饼图。

下面分别介绍pie文件夹下的三个jsp文件(web.xml文件是之前的公用部分,不用做任何的更改):

pie1.jsp
 1 <%@ page contentType="text/html;charset=GBK"%>
2
3 <%@ page
4 import="org.jfree.chart.*,org.jfree.chart.plot.PiePlot,
5 org.jfree.data.general.DefaultPieDataset,
6 org.jfree.chart.servlet.ServletUtilities,
7 java.awt.*,org.jfree.chart.title.TextTitle"%>
8 <%
9 //设置数据集
10 DefaultPieDataset dataset = new DefaultPieDataset();
11 dataset.setValue("初中高级程序员", 0.55);
12 dataset.setValue("项目经理", 0.1);
13 dataset.setValue("系统分析师", 0.1);
14 dataset.setValue("软件架构师", 0.1);
15 dataset.setValue("其他", 0.2);
16
17 //通过工厂类生成JFreeChart对象
18 JFreeChart chart = ChartFactory.createPieChart3D("IT行业职业分布图",
19 dataset, true, false, false);
20 PiePlot pieplot = (PiePlot) chart.getPlot();
21
22 //没有数据的时候显示的内容
23 pieplot.setNoDataMessage("无数据显示");
24 pieplot.setCircular(false);
25 pieplot.setLabelGap(0.02D);
26
27 //标题文字乱码
28 TextTitle textTitle = chart.getTitle();
29 textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
30 //饼上的文字乱码
31 PiePlot plot = (PiePlot) chart.getPlot();
32 plot.setLabelFont(new Font("宋体", Font.BOLD, 20));
33 //图例文字乱码
34 chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));
35
36 String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300,
37 null, session);
38 String graphURL = request.getContextPath()
39 + "/DisplayChart?filename=" + filename;
40 %>
41
42 <html>
43 <head>
44 <title>饼状图1(基本的饼图)</title>
45 </head>
46 <body>
47 <img src="<%=graphURL%>" width=500 height=300 border=0
48 usemap="#<%= filename %>">
49 </body>
50 </html>
 

pie2.jsp  一个显示百分比的饼图

pie2.jsp
 1 <%@ page contentType="text/html;charset=GBK"%>
2
3 <%@ page
4 import="org.jfree.chart.*,org.jfree.chart.plot.PiePlot,
5 org.jfree.data.general.DefaultPieDataset,
6 org.jfree.chart.servlet.ServletUtilities,
7 java.awt.*,org.jfree.chart.title.TextTitle"%>
8 <%@ page
9 import="org.jfree.chart.labels.StandardPieSectionLabelGenerator"%>
10 <%@ page import="java.text.NumberFormat"%>
11 <%@page import="java.text.DecimalFormat"%>
12
13 <%
14 //设置数据集
15 DefaultPieDataset dataset = new DefaultPieDataset();
16 dataset.setValue("初中高级程序员", 0.52);
17 dataset.setValue("项目经理", 0.1);
18 dataset.setValue("系统分析师", 0.1);
19 dataset.setValue("软件架构师", 0.1);
20 dataset.setValue("其他", 0.18);
21
22 //通过工厂类生成JFreeChart对象
23 JFreeChart chart = ChartFactory.createPieChart3D("IT行业职业分布图",
24 dataset, true, false, false);
25
26 PiePlot pieplot = (PiePlot) chart.getPlot();
27 //一块突出的饼图,在网上搜了好久也没找到可行的实现方式,欢迎大侠指导 <?后期如果找到解决方法再来做修改?>
28 //pieplot.setExplodePercent("A",0.3D);//炸开的饼图,目前实现还有问题
29
30 //DecimalFormat:
31 //NumberFormat:
32 //StandardPieSectionLabelGenerator:
33 //setLabelGenerator():
34 DecimalFormat df = new DecimalFormat("0.00%");//获得一个DecimalFormat对象,主要是设置小数问题
35 NumberFormat nf = NumberFormat.getNumberInstance();//获得一个NumberFormat对象
36 StandardPieSectionLabelGenerator sp = new StandardPieSectionLabelGenerator(
37 "{0}{2}", nf, df);//获得StandardPieSectionLabelGenerator对象
38 pieplot.setLabelGenerator(sp);//设置饼图显示百分比
39
40 //没有数据的时候显示的内容
41 pieplot.setNoDataMessage("无数据显示");
42 pieplot.setCircular(false);
43 pieplot.setLabelGap(0.02D);
44
45 pieplot.setIgnoreNullValues(true);//设置不显示空值
46 pieplot.setIgnoreZeroValues(true);//设置不显示负值
47
48 //标题文字乱码 IT行业职业分布图
49 TextTitle textTitle = chart.getTitle();
50 textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
51
52 //饼上的文字乱码
53 PiePlot plot = (PiePlot) chart.getPlot();
54 plot.setLabelFont(new Font("宋体", Font.PLAIN, 12));
55
56 //图例文字乱码 饼图下面的5个说明
57 chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));
58
59 String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300,
60 null, session);
61 String graphURL = request.getContextPath()
62 + "/DisplayChart?filename=" + filename;
63 %>
64
65 <html>
66 <head>
67 <title>饼状图2(加上百分比并突出显示某块)</title>
68 </head>
69 <body>
70 <img src="<%=graphURL%>" width=500 height=300 border=0
71 usemap="#<%= filename %>">
72 </body>
73 </html>

 

pie3.jsp    一个水晶效果的拼图

 

pie3.jsp
 1 <%@ page contentType="text/html;charset=GBK"%>
2
3 <%@ page
4 import="org.jfree.chart.*,org.jfree.chart.servlet.ServletUtilities,
5 org.jfree.util.Rotation,org.jfree.data.general.DefaultPieDataset,
6 org.jfree.chart.plot.PiePlot3D,org.jfree.chart.title.TextTitle,
7 java.awt.Font,org.jfree.chart.plot.PiePlot"%>
8
9 <%
10 //设置数据集
11 DefaultPieDataset dataset = new DefaultPieDataset();
12 dataset.setValue("初中高级程序员", 0.52);
13 dataset.setValue("项目经理", 0.1);
14 dataset.setValue("系统分析师", 0.1);
15 dataset.setValue("软件架构师", 0.1);
16 dataset.setValue("其他", 0.18);
17
18 //通过工厂类生成JFreeChart对象
19 JFreeChart chart = ChartFactory.createPieChart3D("IT行业职业分布图",
20 dataset, true, true, false);
21 //获得3D的水晶图对象
22 PiePlot3D pieplot3d = (PiePlot3D) chart.getPlot();
23 //设置开始角度
24 pieplot3d.setStartAngle(150D);
25 //设置方向为“顺时针方向”
26 pieplot3d.setDirection(Rotation.CLOCKWISE);
27
28 //设置透明度,0.5F为半透明,1为不透明,0为全透明
29 pieplot3d.setForegroundAlpha(0.5F);
30
31 //没有数据的时候显示的内容
32 pieplot3d.setNoDataMessage("无数据显示");
33
34 //标题文字乱码 IT行业职业分布图
35 TextTitle textTitle = chart.getTitle();
36 textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
37
38 //饼上的文字乱码
39 PiePlot plot = (PiePlot) chart.getPlot();
40 plot.setLabelFont(new Font("宋体", Font.PLAIN, 12));
41
42 //图例文字乱码 饼图下面的5个说明
43 chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));
44
45 String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300,
46 null, session);
47 String graphURL = request.getContextPath()
48 + "/DisplayChart?filename=" + filename;
49 %>
50
51 <html>
52 <head>
53 <title>饼状图3(水晶饼图)</title>
54 </head>
55 <body>
56 <img src="<%=graphURL%>" width=500 height=300 border=0
57 usemap="#<%= filename %>">
58 </body>
59 </html>

 

result:

pie1.jsp运行的截图如下:

访问的url为:http://localhost:8080/JFreeChart/pie/pie1.jsp

jfreechart简单介绍2---饼图

 

pie2.jsp运行的截图如下:

访问的url为:http://localhost:8080/JFreeChart/pie/pie2.jsp

jfreechart简单介绍2---饼图

 

 

pie3.jsp运行的截图如下:

访问的url为:http://localhost:8080/JFreeChart/pie/pie3.jsp

jfreechart简单介绍2---饼图

 

欢迎各位补充,我也是整合了一些资料,然后贴出来,如果有什么不足之处请各位不吝指教。

相关文章: