- 浏览: 281069 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
1339344944:
czb6788782 写道亲,你这Global类能给一份么
解压tar.gz文件包 -
牧佑叔叔:
[size=small][/size]u;8i
Mybatis实现条件查询 -
牧佑叔叔:
Mybatis实现条件查询 -
简妮3:
亲们 想问下 定时任务在启动的时候可以传参数么?
java 定时器几种方式 -
czb6788782:
亲,你这Global类能给一份么
解压tar.gz文件包
1.JFreeChart配置安装
2. 1、解压jfreechart_0.9.21.zip到指定位置,其中source是jfreechart的源码,jfreechart-0.9.21-demo.jar
3. 是例子程序(该部分留给大家自己去研究)
4. 2、为了配置成功,我们需要关注的文件有如下三个:jfreechart-0.9.21.jar、lib\jcommon-0.9.6.jar、
5. lib\gnujaxp.jar
6. 3、如果是Application开发,把上述三个文件拷贝到%JAVA_HOME%\LIB中,同时在环境变量CLASSPATH中加入
7. 如果是WEB开发,以TOMCAT中的一个WEB项目TEST为例子说明:
8. 把上述三个文件拷贝到TEST\WEB-INF\LIB中,然后修改TEST\WEB-INF\web.xml文件,在其中加入如下代码:
9. <servlet>
10. <servlet-name>DisplayChart</servlet-name>
11. <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
12. </servlet>
13. <servlet-mapping>
14. <servlet-name>DisplayChart</servlet-name>
15. <url-pattern>/servlet/DisplayChart</url-pattern>
16. </servlet-mapping>
17. 至此jfreechart的配置就完成了,下面就可以进行jfreechart的开发了。这里值得提出的是jfreechart的类
18. 结构设计前后兼容性不是很好,不同版本的jfreechart中类库结构可能不一样,有时候可能需要查源码。如果
19. 是中文显示的时候可能依据观感需要改变源码的字体,不过我个人觉得这个版本比以前版本要好一些。
20.
21.JFreeChart开发
22.
23.package dao;
24.
25.import java.awt.Color;
26.import java.awt.Font;
27.import java.io.PrintWriter;
28.import java.text.DecimalFormat;
29.import java.text.NumberFormat;
30.
31.import javax.servlet.http.HttpServletRequest;
32.import javax.servlet.http.HttpSession;
33.
34.import org.jfree.chart.ChartFactory;
35.import org.jfree.chart.ChartRenderingInfo;
36.import org.jfree.chart.JFreeChart;
37.import org.jfree.chart.axis.CategoryAxis;
38.import org.jfree.chart.axis.NumberAxis;
39.import org.jfree.chart.axis.ValueAxis;
40.import org.jfree.chart.entity.StandardEntityCollection;
41.import org.jfree.chart.labels.ItemLabelAnchor;
42.import org.jfree.chart.labels.ItemLabelPosition;
43.import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
44.import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
45.import org.jfree.chart.plot.CategoryPlot;
46.import org.jfree.chart.plot.PiePlot3D;
47.import org.jfree.chart.plot.PlotOrientation;
48.import org.jfree.chart.renderer.category.BarRenderer3D;
49.import org.jfree.chart.renderer.category.LineAndShapeRenderer;
50.import org.jfree.chart.servlet.ServletUtilities;
51.import org.jfree.data.category.CategoryDataset;
52.import org.jfree.data.category.DefaultCategoryDataset;
53.import org.jfree.data.general.DefaultPieDataset;
54.import org.jfree.data.general.PieDataset;
55.import org.jfree.ui.TextAnchor;
56.
57.
58.
59.public class FreeChartCommon {
60.
61. static String graphURL1 = null;
62.
63. /**
64. * 饼状图
65. */
66. public static JFreeChart generatePieChart(String xml) {
67. PieDataset dataset = getDataSet(xml);
68. JFreeChart chart = ChartFactory.createPieChart3D("纳税考评信息饼状图", // 图表标题
69. dataset, // 数据集
70. true, // 是否显示图例
71. false, // 是否生成工具
72. false // 是否生成URL链接
73. );
74. chart.setBackgroundPaint(Color.pink);
75. chart.getTitle().setFont(new Font("宋体",Font.BOLD,20));
76. chart.getLegend().setItemFont(new Font("宋体",Font.BOLD,10));
77. PiePlot3D plot = (PiePlot3D) chart.getPlot();
78.
79. plot.setLabelFont(new Font("SansSerif",Font.BOLD,12));
80.
81. plot.setCircular(true);
82.
83. plot.setLabelGap(0.01D);//间距
84. //图片中显示百分比:默认方式
85. //设置无数据时的信息
86. plot.setNoDataMessage("无对应的数据,请重新查询。");
87.
88. //设置无数据时的信息显示颜色
89. plot.setNoDataMessagePaint(Color.red);
90. //图片中显示百分比:自定义方式,{0} 表示选项, {1} 表示数值, {2} 表示所占比例 ,小数点后两位
91. plot.setLabelGenerator(new StandardPieSectionLabelGenerator(
92. "{0}={1}({2})", NumberFormat.getNumberInstance(),
93. new DecimalFormat("0.00%")));
94. //图例显示百分比:自定义方式, {0} 表示选项, {1} 表示数值, {2} 表示所占比例
95. plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator(
96. "{0}={1}({2})"));
97. return chart;
98. }
99.
100. /**
101. * 柱状图
102. */
103. public static JFreeChart generateBarChart(String xml) {
104. CategoryDataset dataset = getDataSet2(xml);
105. JFreeChart chart = ChartFactory.createBarChart3D("纳税考评信息柱状图", // 图表标题
106. "", // 目录轴的显示标签
107. "", // 数值轴的显示标签
108. dataset, // 数据集
109. PlotOrientation.VERTICAL, // 图表方向:水平、垂直
110. true, // 是否显示图例(对于简单的柱状图必须是false)
111. false, // 是否生成工具
112. false // 是否生成URL链接
113. );
114. //显示每个柱的数值,并修改该数值的字体属性
115. chart.getTitle().setFont(new Font("宋体",Font.BOLD,20));
116. chart.getLegend().setItemFont(new Font("宋体",Font.BOLD,10));
117.
118. CategoryPlot plot=chart.getCategoryPlot();//获取图表区域对象
119.
120. CategoryAxis domainAxis=plot.getDomainAxis();
121. //水平底部列表
122. domainAxis.setLabelFont(new Font("宋体",Font.BOLD,14));
123. //水平底部标题
124. domainAxis.setTickLabelFont(new Font("宋体",Font.BOLD,12));
125. //垂直标题
126. ValueAxis rangeAxis=plot.getRangeAxis();//获取柱状
127. rangeAxis.setLabelFont(new Font("宋体",Font.BOLD,15));
128.
129. CategoryPlot categoryplot = (CategoryPlot) chart.getPlot();
130. categoryplot.setNoDataMessage("无对应的数据,请重新查询。");
131. categoryplot.getRenderer().setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
132. categoryplot.getRenderer().setItemLabelsVisible(true);
133. categoryplot.getRenderer().setPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12,
134. TextAnchor.BOTTOM_LEFT));
135. BarRenderer3D renderer = new BarRenderer3D();
136. renderer.setItemLabelGenerator( new StandardCategoryItemLabelGenerator());
137. renderer.setItemLabelsVisible( true );
138. return chart;
139. }
140.
141. /**
142. * 折线图
143. */
144. public static JFreeChart generateLineChart(String xml) {
145.
146.
147. CategoryDataset dataset = getDataSet3(xml);
148. JFreeChart chart = ChartFactory.createLineChart("纳税考评折线图", // 图表标题
149. "", // 目录轴的显示标签
150. "", // 数值轴的显示标签
151. dataset, // 数据集
152. PlotOrientation.VERTICAL, // 图表方向:水平、垂直
153. true, // 是否显示图例(对于简单的柱状图必须是false)
154. false, // 是否生成工具
155. false // 是否生成URL链接
156. );
157.
158. /*------------配置图表属性--------------*/
159. // 1,设置整个图表背景颜色
160. chart.setBackgroundPaint(Color.pink);
161.
162. /*------------设定Plot参数-------------*/
163. CategoryPlot plot = chart.getCategoryPlot();
164. // 2,设置详细图表的显示细节部分的背景颜色
165. // plot.setBackgroundPaint(Color.PINK);
166. // 3,设置垂直网格线颜色
167. plot.setDomainGridlinePaint(Color.black);
168. // 4,设置是否显示垂直网格线
169. plot.setDomainGridlinesVisible(true);
170. // 5,设置水平网格线颜色
171. plot.setRangeGridlinePaint(Color.blue);
172. // 6,设置是否显示水平网格线
173. plot.setRangeGridlinesVisible(true);
174.
175. /*----------设置消除字体的锯齿渲染(解决中文问题)--------------*/
176. //显示每个柱的数值,并修改该数值的字体属性
177. chart.getTitle().setFont(new Font("宋体", Font.BOLD, 15));
178. chart.getLegend().setItemFont(new Font("宋体", Font.BOLD, 15));
179.
180. CategoryAxis domainAxis = plot.getDomainAxis();
181. /*------设置X轴坐标上的文字-----------*/
182. domainAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 11));
183. /*------设置X轴的标题文字------------*/
184. domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
185. NumberAxis numberaxis = (NumberAxis) plot.getRangeAxis();
186. /*------设置Y轴坐标上的文字-----------*/
187. numberaxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 12));
188.
189. /*------设置Y轴的标题文字------------*/
190. numberaxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
191. numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
192. numberaxis.setAutoRangeIncludesZero(true);
193. numberaxis.setUpperMargin(0.20);
194. numberaxis.setLabelAngle(Math.PI / 2.0);
195. chart.getLegend().setItemFont(new Font("宋体",Font.BOLD,10));
196.
197.// 获得renderer 注意这里是下嗍造型到lineandshaperenderer!!
198. LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer)plot.getRenderer();
199.//
200. lineandshaperenderer.setBaseShapesVisible(true); // series 点(即数据点)可见
201. lineandshaperenderer.setBaseLinesVisible(true); // series 点(即数据点)间有连线可见
202.
203. //显示折点数据
204. lineandshaperenderer.setBaseItemLabelGenerator(new
205. StandardCategoryItemLabelGenerator());
206. lineandshaperenderer.setBaseItemLabelsVisible(true);
207.
208. return chart;
209. }
210.
211. /**
212. * 获取一个饼状图的简单数据集对象
213. *
214. * @return
215. */
216. private static PieDataset getDataSet(String xml) {
217. DefaultPieDataset dataset = new DefaultPieDataset();
218.// try {
219.// xml = "<ROOT>" + xml + "</ROOT>";
220.// Document document = DocumentHelper.parseText(xml);
221.// // 读取ITEM
222.// List list = document.selectNodes("//ITEM");
223.// // 获取NODE细节
224.// Iterator it = list.iterator();
225.//
226.// while (it.hasNext()) {
227.// Node node = (Node) it.next();
228.// /**
229.// *
230.// */
231.// dataset.setValue(Tools.nullToSpace(node.valueOf("HZFS")), Double.parseDouble(node.valueOf("XMMC")));
232.//
233.// }
234.//
235.// } catch (Exception e) {
236.//
237.// e.printStackTrace();
238.//
239.// }
240. dataset.setValue("管理人员啊", 10.02D);
241.
242. dataset.setValue("市场人员啊", 20.23D);
243.
244. dataset.setValue("开发人员啊", 60.02D);
245.
246. dataset.setValue("OEM人员啊", 10.02D);
247.
248. dataset.setValue("其他人员啊", 5.11D);
249.
250. dataset.setValue("其他人员啊3", 5.11D);
251. return dataset;
252. }
253.
254. /**
255. * 获取一个柱状图数据集对象
256. *
257. * @return
258. */
259. private static CategoryDataset getDataSet2(String xml) {
260. DefaultCategoryDataset dataset = new DefaultCategoryDataset();
261.// try {
262.// xml = "<ROOT>" + xml + "</ROOT>";
263.// Document document = DocumentHelper.parseText(xml);
264.// // 读取ITEM
265.// List list = document.selectNodes("//ITEM");
266.// // 获取NODE细节
267.// Iterator it = list.iterator();
268.// while (it.hasNext()) {
269.// Node node = (Node) it.next();
270.// dataset.setValue(Double.parseDouble(node.valueOf("XMMC")), Tools
271.// .nullToSpace(node.valueOf("HZFS")), Tools.nullToSpace(node
272.// .valueOf("HZFS")));
273.// }
274.//
275.// } catch (Exception e) {
276.//
277.// e.printStackTrace();
278.//
279.// }
280. // 各曲线名称
281. String series1 = "计划";
282. String series2 = "营销";
283. String series3 = "开发";
284.
285. // 横轴名称(列名称)
286. String type1 = "管理人员";
287. String type2 = "市场人员";
288. String type3 = "开发人员";
289.
290. dataset.setValue(10.02D,series1,type1);
291. dataset.setValue(10.02D,series1,type2);
292. dataset.setValue(10.02D,series1,type3);
293.
294. dataset.setValue(40.02D,series2,type1);
295. dataset.setValue(40.02D,series2,type2);
296. dataset.setValue(80.02D,series2,type3);
297.
298. dataset.setValue(50.02D,series3,type1);
299. dataset.setValue(50.02D,series3,type2);
300. dataset.setValue(60.02D,series3,type3);
301.
302. return dataset;
303. }
304.
305. /**
306. * 获取一个折线图数据集对象
307. *
308. * @return
309. */
310. public static CategoryDataset getDataSet3(String xml) {
311. DefaultCategoryDataset dataset = new DefaultCategoryDataset();
312.// try {
313.// xml = "<ROOT>" + xml + "</ROOT>";
314.// Document document = DocumentHelper.parseText(xml);
315.// // 读取ITEM
316.// List list = document.selectNodes("//ITEM");
317.// // 获取NODE细节
318.// Iterator it = list.iterator();
319.//
320.// while (it.hasNext()) {
321.// Node node = (Node) it.next();
322.// dataset.setValue(Double.parseDouble(node.valueOf("ZF")), Tools
323.// .nullToSpace(node.valueOf("XMMC")), Tools.nullToSpace(node
324.// .valueOf("NF")));
325.// }
326.// } catch (Exception e) {
327.//
328.// e.printStackTrace();
329.//
330.// }
331. // 各曲线名称
332. String series1 = "管理人员";
333. String series2 = "市场人员";
334. String series3 = "开发人员";
335.
336. // 横轴名称(列名称)
337. String type1 = "计划";
338. String type2 = "营销";
339. String type3 = "洗衣机";
340.
341. dataset.setValue(0.0, series1, type1);
342. dataset.setValue(4.2, series1, type2);
343. dataset.setValue(3.9, series1, type3);
344.
345. dataset.setValue(1.0, series2, type1);
346. dataset.setValue(5.2, series2, type2);
347. dataset.setValue(7.9, series2, type3);
348.
349. dataset.setValue(2.0, series3, type1);
350. dataset.setValue(9.2, series3, type2);
351. dataset.setValue(8.9, series3, type3);
352.
353. return dataset;
354. }
355.
356.
357. /**
358. *
359. * @param request
360. * @param session
361. * @param out
362. * @param xml
363. * @param x 1表示折线图,2表示饼图,3表示柱状图
364. * @return
365. */
366. public static String getGraphUrl(HttpServletRequest request, HttpSession session,
367. PrintWriter out,String xml,int x) {
368. JFreeChart chart=null;
369. if(x==1){
370. chart=generateLineChart(xml);
371. }
372. if(x==2){
373. chart=generatePieChart(xml);
374. }
375. if(x==3){
376. chart=generateBarChart(xml);
377. }
378.
379. StandardEntityCollection sec = new StandardEntityCollection();
380. ChartRenderingInfo info = new ChartRenderingInfo(sec);
381. try {
382. String filename = ServletUtilities.saveChartAsJPEG(chart, 500, 300,
383. info, null);
384.
385. graphURL1 = request.getContextPath()
386. + "/servlet/DisplayChart?filename=" + filename;
387. } catch (Exception e) {
388. System.out.println("error happens---" + e.toString());
389.
390. }
391. return graphURL1;
392. }
393.}
394.
395.package navigate;
396.
397.import java.io.IOException;
398.import java.io.PrintWriter;
399.
400.import javax.servlet.ServletException;
401.import javax.servlet.http.HttpServlet;
402.import javax.servlet.http.HttpServletRequest;
403.import javax.servlet.http.HttpServletResponse;
404.
405.import common.Tools;
406.
407.import dao.FreeChartCommon;
408.
409.public class JfreeChar_Test extends HttpServlet {
410.
411. /**
412. * Constructor of the object.
413. */
414. public JfreeChar_Test() {
415. super();
416. }
417.
418. /**
419. * Destruction of the servlet. <br>
420. */
421. public void destroy() {
422. super.destroy(); // Just puts "destroy" string in log
423. // Put your code here
424. }
425.
426. public void doGet(HttpServletRequest request, HttpServletResponse response)
427. throws ServletException, IOException {
428. response.setContentType("text/html;charset=GBK");
429. response.setHeader("Cache-Control", "no-cache");
430. PrintWriter out = response.getWriter();
431. String method = request.getParameter("method");
432. String xml=request.getParameter("xml");
433. if (method == null) {
434. method = "";
435. }
436. if (xml == null) {
437. xml = "";
438. }
439. String filename="";
440. if(method.equals("line"))
441. {
442. filename=FreeChartCommon.getGraphUrl(request,request.getSession(),out,Tools.editStr(xml),1);
443. out.print(filename);
444. }
445. if(method.equals("pie"))
446. {
447. filename=FreeChartCommon.getGraphUrl(request,request.getSession(),out,Tools.editStr(xml),2);
448. out.print(filename);
449. }
450. if(method.equals("bar"))
451. {
452. filename=FreeChartCommon.getGraphUrl(request,request.getSession(),out,Tools.editStr(xml),3);
453. out.print(filename);
454. }
455. }
456.
457.}
458.
459.页面:
460.
461.<img id="imagetu" src="<%=request.getContextPath()%>/servlet/JfreeChar_Test?method=pie">
2. 1、解压jfreechart_0.9.21.zip到指定位置,其中source是jfreechart的源码,jfreechart-0.9.21-demo.jar
3. 是例子程序(该部分留给大家自己去研究)
4. 2、为了配置成功,我们需要关注的文件有如下三个:jfreechart-0.9.21.jar、lib\jcommon-0.9.6.jar、
5. lib\gnujaxp.jar
6. 3、如果是Application开发,把上述三个文件拷贝到%JAVA_HOME%\LIB中,同时在环境变量CLASSPATH中加入
7. 如果是WEB开发,以TOMCAT中的一个WEB项目TEST为例子说明:
8. 把上述三个文件拷贝到TEST\WEB-INF\LIB中,然后修改TEST\WEB-INF\web.xml文件,在其中加入如下代码:
9. <servlet>
10. <servlet-name>DisplayChart</servlet-name>
11. <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
12. </servlet>
13. <servlet-mapping>
14. <servlet-name>DisplayChart</servlet-name>
15. <url-pattern>/servlet/DisplayChart</url-pattern>
16. </servlet-mapping>
17. 至此jfreechart的配置就完成了,下面就可以进行jfreechart的开发了。这里值得提出的是jfreechart的类
18. 结构设计前后兼容性不是很好,不同版本的jfreechart中类库结构可能不一样,有时候可能需要查源码。如果
19. 是中文显示的时候可能依据观感需要改变源码的字体,不过我个人觉得这个版本比以前版本要好一些。
20.
21.JFreeChart开发
22.
23.package dao;
24.
25.import java.awt.Color;
26.import java.awt.Font;
27.import java.io.PrintWriter;
28.import java.text.DecimalFormat;
29.import java.text.NumberFormat;
30.
31.import javax.servlet.http.HttpServletRequest;
32.import javax.servlet.http.HttpSession;
33.
34.import org.jfree.chart.ChartFactory;
35.import org.jfree.chart.ChartRenderingInfo;
36.import org.jfree.chart.JFreeChart;
37.import org.jfree.chart.axis.CategoryAxis;
38.import org.jfree.chart.axis.NumberAxis;
39.import org.jfree.chart.axis.ValueAxis;
40.import org.jfree.chart.entity.StandardEntityCollection;
41.import org.jfree.chart.labels.ItemLabelAnchor;
42.import org.jfree.chart.labels.ItemLabelPosition;
43.import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
44.import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
45.import org.jfree.chart.plot.CategoryPlot;
46.import org.jfree.chart.plot.PiePlot3D;
47.import org.jfree.chart.plot.PlotOrientation;
48.import org.jfree.chart.renderer.category.BarRenderer3D;
49.import org.jfree.chart.renderer.category.LineAndShapeRenderer;
50.import org.jfree.chart.servlet.ServletUtilities;
51.import org.jfree.data.category.CategoryDataset;
52.import org.jfree.data.category.DefaultCategoryDataset;
53.import org.jfree.data.general.DefaultPieDataset;
54.import org.jfree.data.general.PieDataset;
55.import org.jfree.ui.TextAnchor;
56.
57.
58.
59.public class FreeChartCommon {
60.
61. static String graphURL1 = null;
62.
63. /**
64. * 饼状图
65. */
66. public static JFreeChart generatePieChart(String xml) {
67. PieDataset dataset = getDataSet(xml);
68. JFreeChart chart = ChartFactory.createPieChart3D("纳税考评信息饼状图", // 图表标题
69. dataset, // 数据集
70. true, // 是否显示图例
71. false, // 是否生成工具
72. false // 是否生成URL链接
73. );
74. chart.setBackgroundPaint(Color.pink);
75. chart.getTitle().setFont(new Font("宋体",Font.BOLD,20));
76. chart.getLegend().setItemFont(new Font("宋体",Font.BOLD,10));
77. PiePlot3D plot = (PiePlot3D) chart.getPlot();
78.
79. plot.setLabelFont(new Font("SansSerif",Font.BOLD,12));
80.
81. plot.setCircular(true);
82.
83. plot.setLabelGap(0.01D);//间距
84. //图片中显示百分比:默认方式
85. //设置无数据时的信息
86. plot.setNoDataMessage("无对应的数据,请重新查询。");
87.
88. //设置无数据时的信息显示颜色
89. plot.setNoDataMessagePaint(Color.red);
90. //图片中显示百分比:自定义方式,{0} 表示选项, {1} 表示数值, {2} 表示所占比例 ,小数点后两位
91. plot.setLabelGenerator(new StandardPieSectionLabelGenerator(
92. "{0}={1}({2})", NumberFormat.getNumberInstance(),
93. new DecimalFormat("0.00%")));
94. //图例显示百分比:自定义方式, {0} 表示选项, {1} 表示数值, {2} 表示所占比例
95. plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator(
96. "{0}={1}({2})"));
97. return chart;
98. }
99.
100. /**
101. * 柱状图
102. */
103. public static JFreeChart generateBarChart(String xml) {
104. CategoryDataset dataset = getDataSet2(xml);
105. JFreeChart chart = ChartFactory.createBarChart3D("纳税考评信息柱状图", // 图表标题
106. "", // 目录轴的显示标签
107. "", // 数值轴的显示标签
108. dataset, // 数据集
109. PlotOrientation.VERTICAL, // 图表方向:水平、垂直
110. true, // 是否显示图例(对于简单的柱状图必须是false)
111. false, // 是否生成工具
112. false // 是否生成URL链接
113. );
114. //显示每个柱的数值,并修改该数值的字体属性
115. chart.getTitle().setFont(new Font("宋体",Font.BOLD,20));
116. chart.getLegend().setItemFont(new Font("宋体",Font.BOLD,10));
117.
118. CategoryPlot plot=chart.getCategoryPlot();//获取图表区域对象
119.
120. CategoryAxis domainAxis=plot.getDomainAxis();
121. //水平底部列表
122. domainAxis.setLabelFont(new Font("宋体",Font.BOLD,14));
123. //水平底部标题
124. domainAxis.setTickLabelFont(new Font("宋体",Font.BOLD,12));
125. //垂直标题
126. ValueAxis rangeAxis=plot.getRangeAxis();//获取柱状
127. rangeAxis.setLabelFont(new Font("宋体",Font.BOLD,15));
128.
129. CategoryPlot categoryplot = (CategoryPlot) chart.getPlot();
130. categoryplot.setNoDataMessage("无对应的数据,请重新查询。");
131. categoryplot.getRenderer().setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
132. categoryplot.getRenderer().setItemLabelsVisible(true);
133. categoryplot.getRenderer().setPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12,
134. TextAnchor.BOTTOM_LEFT));
135. BarRenderer3D renderer = new BarRenderer3D();
136. renderer.setItemLabelGenerator( new StandardCategoryItemLabelGenerator());
137. renderer.setItemLabelsVisible( true );
138. return chart;
139. }
140.
141. /**
142. * 折线图
143. */
144. public static JFreeChart generateLineChart(String xml) {
145.
146.
147. CategoryDataset dataset = getDataSet3(xml);
148. JFreeChart chart = ChartFactory.createLineChart("纳税考评折线图", // 图表标题
149. "", // 目录轴的显示标签
150. "", // 数值轴的显示标签
151. dataset, // 数据集
152. PlotOrientation.VERTICAL, // 图表方向:水平、垂直
153. true, // 是否显示图例(对于简单的柱状图必须是false)
154. false, // 是否生成工具
155. false // 是否生成URL链接
156. );
157.
158. /*------------配置图表属性--------------*/
159. // 1,设置整个图表背景颜色
160. chart.setBackgroundPaint(Color.pink);
161.
162. /*------------设定Plot参数-------------*/
163. CategoryPlot plot = chart.getCategoryPlot();
164. // 2,设置详细图表的显示细节部分的背景颜色
165. // plot.setBackgroundPaint(Color.PINK);
166. // 3,设置垂直网格线颜色
167. plot.setDomainGridlinePaint(Color.black);
168. // 4,设置是否显示垂直网格线
169. plot.setDomainGridlinesVisible(true);
170. // 5,设置水平网格线颜色
171. plot.setRangeGridlinePaint(Color.blue);
172. // 6,设置是否显示水平网格线
173. plot.setRangeGridlinesVisible(true);
174.
175. /*----------设置消除字体的锯齿渲染(解决中文问题)--------------*/
176. //显示每个柱的数值,并修改该数值的字体属性
177. chart.getTitle().setFont(new Font("宋体", Font.BOLD, 15));
178. chart.getLegend().setItemFont(new Font("宋体", Font.BOLD, 15));
179.
180. CategoryAxis domainAxis = plot.getDomainAxis();
181. /*------设置X轴坐标上的文字-----------*/
182. domainAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 11));
183. /*------设置X轴的标题文字------------*/
184. domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
185. NumberAxis numberaxis = (NumberAxis) plot.getRangeAxis();
186. /*------设置Y轴坐标上的文字-----------*/
187. numberaxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 12));
188.
189. /*------设置Y轴的标题文字------------*/
190. numberaxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
191. numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
192. numberaxis.setAutoRangeIncludesZero(true);
193. numberaxis.setUpperMargin(0.20);
194. numberaxis.setLabelAngle(Math.PI / 2.0);
195. chart.getLegend().setItemFont(new Font("宋体",Font.BOLD,10));
196.
197.// 获得renderer 注意这里是下嗍造型到lineandshaperenderer!!
198. LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer)plot.getRenderer();
199.//
200. lineandshaperenderer.setBaseShapesVisible(true); // series 点(即数据点)可见
201. lineandshaperenderer.setBaseLinesVisible(true); // series 点(即数据点)间有连线可见
202.
203. //显示折点数据
204. lineandshaperenderer.setBaseItemLabelGenerator(new
205. StandardCategoryItemLabelGenerator());
206. lineandshaperenderer.setBaseItemLabelsVisible(true);
207.
208. return chart;
209. }
210.
211. /**
212. * 获取一个饼状图的简单数据集对象
213. *
214. * @return
215. */
216. private static PieDataset getDataSet(String xml) {
217. DefaultPieDataset dataset = new DefaultPieDataset();
218.// try {
219.// xml = "<ROOT>" + xml + "</ROOT>";
220.// Document document = DocumentHelper.parseText(xml);
221.// // 读取ITEM
222.// List list = document.selectNodes("//ITEM");
223.// // 获取NODE细节
224.// Iterator it = list.iterator();
225.//
226.// while (it.hasNext()) {
227.// Node node = (Node) it.next();
228.// /**
229.// *
230.// */
231.// dataset.setValue(Tools.nullToSpace(node.valueOf("HZFS")), Double.parseDouble(node.valueOf("XMMC")));
232.//
233.// }
234.//
235.// } catch (Exception e) {
236.//
237.// e.printStackTrace();
238.//
239.// }
240. dataset.setValue("管理人员啊", 10.02D);
241.
242. dataset.setValue("市场人员啊", 20.23D);
243.
244. dataset.setValue("开发人员啊", 60.02D);
245.
246. dataset.setValue("OEM人员啊", 10.02D);
247.
248. dataset.setValue("其他人员啊", 5.11D);
249.
250. dataset.setValue("其他人员啊3", 5.11D);
251. return dataset;
252. }
253.
254. /**
255. * 获取一个柱状图数据集对象
256. *
257. * @return
258. */
259. private static CategoryDataset getDataSet2(String xml) {
260. DefaultCategoryDataset dataset = new DefaultCategoryDataset();
261.// try {
262.// xml = "<ROOT>" + xml + "</ROOT>";
263.// Document document = DocumentHelper.parseText(xml);
264.// // 读取ITEM
265.// List list = document.selectNodes("//ITEM");
266.// // 获取NODE细节
267.// Iterator it = list.iterator();
268.// while (it.hasNext()) {
269.// Node node = (Node) it.next();
270.// dataset.setValue(Double.parseDouble(node.valueOf("XMMC")), Tools
271.// .nullToSpace(node.valueOf("HZFS")), Tools.nullToSpace(node
272.// .valueOf("HZFS")));
273.// }
274.//
275.// } catch (Exception e) {
276.//
277.// e.printStackTrace();
278.//
279.// }
280. // 各曲线名称
281. String series1 = "计划";
282. String series2 = "营销";
283. String series3 = "开发";
284.
285. // 横轴名称(列名称)
286. String type1 = "管理人员";
287. String type2 = "市场人员";
288. String type3 = "开发人员";
289.
290. dataset.setValue(10.02D,series1,type1);
291. dataset.setValue(10.02D,series1,type2);
292. dataset.setValue(10.02D,series1,type3);
293.
294. dataset.setValue(40.02D,series2,type1);
295. dataset.setValue(40.02D,series2,type2);
296. dataset.setValue(80.02D,series2,type3);
297.
298. dataset.setValue(50.02D,series3,type1);
299. dataset.setValue(50.02D,series3,type2);
300. dataset.setValue(60.02D,series3,type3);
301.
302. return dataset;
303. }
304.
305. /**
306. * 获取一个折线图数据集对象
307. *
308. * @return
309. */
310. public static CategoryDataset getDataSet3(String xml) {
311. DefaultCategoryDataset dataset = new DefaultCategoryDataset();
312.// try {
313.// xml = "<ROOT>" + xml + "</ROOT>";
314.// Document document = DocumentHelper.parseText(xml);
315.// // 读取ITEM
316.// List list = document.selectNodes("//ITEM");
317.// // 获取NODE细节
318.// Iterator it = list.iterator();
319.//
320.// while (it.hasNext()) {
321.// Node node = (Node) it.next();
322.// dataset.setValue(Double.parseDouble(node.valueOf("ZF")), Tools
323.// .nullToSpace(node.valueOf("XMMC")), Tools.nullToSpace(node
324.// .valueOf("NF")));
325.// }
326.// } catch (Exception e) {
327.//
328.// e.printStackTrace();
329.//
330.// }
331. // 各曲线名称
332. String series1 = "管理人员";
333. String series2 = "市场人员";
334. String series3 = "开发人员";
335.
336. // 横轴名称(列名称)
337. String type1 = "计划";
338. String type2 = "营销";
339. String type3 = "洗衣机";
340.
341. dataset.setValue(0.0, series1, type1);
342. dataset.setValue(4.2, series1, type2);
343. dataset.setValue(3.9, series1, type3);
344.
345. dataset.setValue(1.0, series2, type1);
346. dataset.setValue(5.2, series2, type2);
347. dataset.setValue(7.9, series2, type3);
348.
349. dataset.setValue(2.0, series3, type1);
350. dataset.setValue(9.2, series3, type2);
351. dataset.setValue(8.9, series3, type3);
352.
353. return dataset;
354. }
355.
356.
357. /**
358. *
359. * @param request
360. * @param session
361. * @param out
362. * @param xml
363. * @param x 1表示折线图,2表示饼图,3表示柱状图
364. * @return
365. */
366. public static String getGraphUrl(HttpServletRequest request, HttpSession session,
367. PrintWriter out,String xml,int x) {
368. JFreeChart chart=null;
369. if(x==1){
370. chart=generateLineChart(xml);
371. }
372. if(x==2){
373. chart=generatePieChart(xml);
374. }
375. if(x==3){
376. chart=generateBarChart(xml);
377. }
378.
379. StandardEntityCollection sec = new StandardEntityCollection();
380. ChartRenderingInfo info = new ChartRenderingInfo(sec);
381. try {
382. String filename = ServletUtilities.saveChartAsJPEG(chart, 500, 300,
383. info, null);
384.
385. graphURL1 = request.getContextPath()
386. + "/servlet/DisplayChart?filename=" + filename;
387. } catch (Exception e) {
388. System.out.println("error happens---" + e.toString());
389.
390. }
391. return graphURL1;
392. }
393.}
394.
395.package navigate;
396.
397.import java.io.IOException;
398.import java.io.PrintWriter;
399.
400.import javax.servlet.ServletException;
401.import javax.servlet.http.HttpServlet;
402.import javax.servlet.http.HttpServletRequest;
403.import javax.servlet.http.HttpServletResponse;
404.
405.import common.Tools;
406.
407.import dao.FreeChartCommon;
408.
409.public class JfreeChar_Test extends HttpServlet {
410.
411. /**
412. * Constructor of the object.
413. */
414. public JfreeChar_Test() {
415. super();
416. }
417.
418. /**
419. * Destruction of the servlet. <br>
420. */
421. public void destroy() {
422. super.destroy(); // Just puts "destroy" string in log
423. // Put your code here
424. }
425.
426. public void doGet(HttpServletRequest request, HttpServletResponse response)
427. throws ServletException, IOException {
428. response.setContentType("text/html;charset=GBK");
429. response.setHeader("Cache-Control", "no-cache");
430. PrintWriter out = response.getWriter();
431. String method = request.getParameter("method");
432. String xml=request.getParameter("xml");
433. if (method == null) {
434. method = "";
435. }
436. if (xml == null) {
437. xml = "";
438. }
439. String filename="";
440. if(method.equals("line"))
441. {
442. filename=FreeChartCommon.getGraphUrl(request,request.getSession(),out,Tools.editStr(xml),1);
443. out.print(filename);
444. }
445. if(method.equals("pie"))
446. {
447. filename=FreeChartCommon.getGraphUrl(request,request.getSession(),out,Tools.editStr(xml),2);
448. out.print(filename);
449. }
450. if(method.equals("bar"))
451. {
452. filename=FreeChartCommon.getGraphUrl(request,request.getSession(),out,Tools.editStr(xml),3);
453. out.print(filename);
454. }
455. }
456.
457.}
458.
459.页面:
460.
461.<img id="imagetu" src="<%=request.getContextPath()%>/servlet/JfreeChar_Test?method=pie">
发表评论
-
JFreechart折线图web实现
2012-07-14 12:27 7138web.xml配置JFreeChart <ser ... -
JFreechart web示例
2012-07-13 12:21 2048JFreechart柱状图在springMVC中的实现 ja ... -
画柱形图
2012-05-19 15:57 10211.package com.wkx.jfreechart; ... -
JFreeChart画饼形图
2012-05-19 15:54 11101.private void createPieChart(S ... -
JFreeChart画3D二维图
2012-05-19 15:52 8671.public String barChart() thro ...
相关推荐
**JFreeChart** 是一个Java库,用于生成高质量的图表,包括曲线图、柱状图、折线图、饼图以及甘特图等。它在Java应用和Web应用中广泛使用,尤其是对于数据可视化和报告生成。JFreeChart库不仅支持静态图表,还能够...
JFreeChart是一款强大的Java图表库,它为开发者提供了在Java应用程序和Web应用中创建各种复杂图表的能力。这个实例是关于如何使用JFreeChart来绘制饼图、柱状图和折线图,并且这些图表能够在Web环境中展示。在这个...
- **在线教程**:网上有许多关于JFreeChart的教程和博客文章,可以帮助开发者快速上手。 总之,JFreeChart是Java开发者进行数据可视化的得力工具,尽管文档是英文的,但对于有一定基础的开发者来说,这不应成为...
Java 利用 JFreeChart 绘制 Excel 参考 JFreeChart 是一个流行的 Java 图表库,能够生成各种类型的图表,包括折线图、柱状图、饼状图等。下面是使用 JFreeChart 库绘制 Excel 图表的相关知识点: 导包 为了使用 ...
JFreeChart是一款强大的Java图形库,它为开发者提供了一种简单的方式来创建各种复杂的图表,包括折线图、柱状图、饼图、散点图、甘特图等。在Java中,利用JFreeChart可以方便地将数据可视化,这对于数据分析、报告...
java 画图jfreechart.JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。JFreeChart可生成饼图(pie charts)、柱状图(bar ...
这个是我特地开发的一个用JFreeChart开发的用来画图的项目,已经开发成形了各种项目的各种需求的项目,并且自己可以拓展,根据需求修改代码,完成项目的需要。 可以直接下载解压后,import到myeclipse里面,运行: ...
对于常见的统计图表和数据可视化,有许多Java和JavaScript库可以使用,如Java的JFreeChart、JavaFX的ControlsFX,以及JavaScript的D3.js、Chart.js等。这些库提供了丰富的预定义图表类型和自定义选项,可以帮助...
Java Web画图jar包主要指的是用于在Web应用中生成图形的库,如JFreeChart,这是一个非常流行的开源Java库,用于创建高质量的图表。本文将详细介绍JFreeChart库及其在Java Web开发中的应用。 JFreeChart是Java平台上...
在Java编程环境中,JFreeChart是一个非常流行的开源库,它为开发者提供了丰富的图表绘制功能,包括折线图、饼图、柱状图等。在这个"JFreeChart画折线实例"中,我们将深入探讨如何利用JFreeChart库来创建折线图,并将...
Struts2和JFreeChart是两个在Java Web开发中广泛使用的开源库。Struts2是一个强大的MVC(Model-View-Controller)框架,用于构建可维护性和可扩展性极高的Web应用程序,而JFreeChart则是一个用于生成高质量图表的...
**JFreeChart** 是一个强大的Java图形库,用于在应用程序、applets、servlets以及JSP中生成各种类型的图表。这个库的核心在于其模块化的结构,允许开发者根据需要选择和定制图表类型。以下是JFreeChart的主要知识点...
Java web上画图需要用到的。JFreeChart配置安装 1、解压jfreechart_0.9.21.zip到指定位置,其中source是jfreechart的源码,jfreechart-0.9.21-demo.jar 是例子程序(该部分留给大家自己去研究) 2、为了配置成功...
总结起来,"Java_flash_Chart"项目可能是一个利用Java结合图表库,如JFreeChart,创建动态或静态图表的系统,并且具备报表打印功能。开发者通过读取数据源,利用Java的图形和打印API,实现了数据的可视化和报表的...
超好用java第三方包,包含各种画图方法,容易使用
JFreeChart是一款强大的Java图形库,专为开发者设计,用于创建高质量的图表。这款开源工具包使得在Java应用程序中绘制各种复杂图表变得轻而易举,包括柱状图、饼图、线图、散点图、面积图、甘特图以及时间序列图等。...
java根据动态模板生成pdf(包含柱状图)所需jar包 iText+FreeMarker+JFreeChart生成可动态配置的PDF文档。 iText有很强大的PDF处理能力...JFreeChart有这方便的画图API,能画出简单的折线、柱状和饼图,基本能满足需要
通过学习这个教程,你可以熟练地使用JFreeChart为你的Java应用增添丰富的可视化元素,使数据的呈现更加直观和生动。 总结来说,JFreeChart是Java编程中生成图表的强大工具,提供了丰富的功能和灵活性。无论是简单的...
JFreeChart 是一款面向 Java 开发者的免费图形开发类库,主要用于在各种 Java 应用程序(如 application、applets、servlets 和 JSP)中生成图表。它是一款完全开源的项目,遵循 GNU 通用公共许可证 (GPL),确保用户...