- 浏览: 302551 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
泡沫之夏0234:
楼主后来是怎么解决的???
weblogic10 &&ewebeditor -
skying007:
强。thanks
深入浅出JBPM -
yuleidehao:
我也遇到了同样的 问题 ,可能是 Hibernate 不识别 ...
jpq nativesql postgresql -
kevinzhan:
还差一个仪表盘的图表没有
chart -
yukaizhao:
帮到我了
powerdesigner工具面板怎么调出来
本文介绍jfreechart在web中怎样确定图片生成的位置
并且包含了一个jfreechart样式工具类。
webfreechar2.rar对折线图做了更新
1、项目结构
2、ChartUtil.java
package com.jfreechart.util; /** * <br> * 功能描述: <br> * 版权所有: victor <br> * 日期:2009 * * @author 金鳞 * @version 1.0 */ import java.awt.Color; import java.awt.Font; import java.text.DecimalFormat; import java.text.NumberFormat; import org.jfree.chart.ChartFactory; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.axis.CategoryLabelPositions; import org.jfree.chart.axis.ValueAxis; import org.jfree.chart.labels.ItemLabelAnchor; import org.jfree.chart.labels.ItemLabelPosition; import org.jfree.chart.labels.StandardCategoryItemLabelGenerator; import org.jfree.chart.labels.StandardPieSectionLabelGenerator; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PiePlot3D; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.renderer.category.BarRenderer3D; import org.jfree.chart.renderer.category.LineAndShapeRenderer; import org.jfree.chart.renderer.xy.XYItemRenderer; import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; import org.jfree.chart.title.TextTitle; import org.jfree.data.xy.XYDataset; import org.jfree.ui.RectangleInsets; import org.jfree.ui.TextAnchor; public class ChartUtil { /* * 报表字体 */ private static final Font CHART_FONT = new Font("宋体", 12, 12); // 配置字体 private static final Font titlefont = new Font("隶书", Font.BOLD, 24);// 图片标题字体大小,样式 private static final Font xfont = new Font("宋体", Font.PLAIN, 18);// X轴字体大小,样式 private static final Font yfont = new Font("宋体", Font.PLAIN, 18);// y轴字体大小,样式 private static final Font illustrationfont = new Font("宋体", Font.PLAIN, 18);// 底部字体大小,样式 /** * 获得一个时间轴报表图(暂时不使用) * * @param title * 标题 * @param xSubject * X轴标题 * @param ySubject * Y轴标题 * @param dataset * 数据源 * @return 报表 */ public static JFreeChart getTimeSeriesChart(String title, String xSubject, String ySubject, XYDataset dataset) { JFreeChart chart = ChartFactory.createTimeSeriesChart(title, xSubject, ySubject, dataset, true, true, false); chart.setBackgroundPaint(new Color(230, 239, 248)); XYPlot plot = (XYPlot) chart.getPlot(); plot.setBackgroundPaint(Color.lightGray); plot.setDomainGridlinePaint(Color.white); plot.setRangeGridlinePaint(Color.white); plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0)); plot.setDomainCrosshairVisible(true); plot.setRangeCrosshairVisible(true); XYItemRenderer r = plot.getRenderer(); if (r instanceof XYLineAndShapeRenderer) { XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) r; renderer.setBaseShapesVisible(true); renderer.setBaseShapesFilled(true); renderer.setDrawSeriesLineAsPath(true); } // DateAxis axis = plot.getDomainAxis(); // axis.setDateFormatOverride(new SimpleDateFormat("MMM-yyyy")); plot.setNoDataMessage("没有数据显示"); // 设置字体,解决中文乱码问题 chart.getTitle().setFont(CHART_FONT); chart.getLegend().setItemFont(CHART_FONT); // plot.getRangeAxis().setLabelFont(CHART_FONT); plot.getDomainAxis().setLabelFont(new Font("宋体", 12, 24)); return chart; } /** * <br> * 方法说明:设置柱状图样式 <br> * 输入参数: <br> * 返回类型: */ public static void barStyle(JFreeChart chart) { CategoryPlot plot = chart.getCategoryPlot();// 图表的绘制结构对象 // 设置图表标题字体 chart.setTitle(new TextTitle(chart.getTitle().getText(), titlefont)); // X轴 CategoryAxis domainAxis = plot.getDomainAxis(); domainAxis.setLabelFont(xfont);// 设置X轴标签字体大小 domainAxis.setLabelPaint(Color.BLUE); // 设置X轴标签字体颜色 domainAxis.setTickLabelFont(xfont);// 设置X轴数值的字体大小 domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);// 横轴上的标签字体的显示样式,比如说:正斜体,反斜体,标准等等, // Y轴 ValueAxis rangeAxis = plot.getRangeAxis(); rangeAxis.setLabelFont(yfont);// 设置Y轴标签字体的大小,样式 rangeAxis.setLabelPaint(Color.BLUE);// 设置Y轴标签字体颜色 rangeAxis.setTickLabelFont(yfont);// 设置Y轴上的数字的字体大小 // 如果存在图例信息,设置图例字体 if (chart.getLegend() != null) { chart.getLegend().setItemFont(illustrationfont); } // 图表其他特性 BarRenderer3D renderer = new BarRenderer3D(); // 显示每个柱的数值,并修改该数值的字体属性 renderer .setItemLabelGenerator(new StandardCategoryItemLabelGenerator()); renderer.setItemLabelFont(new Font("宋体", Font.PLAIN, 12)); renderer.setItemLabelsVisible(true); plot.setRenderer(renderer); } /** * <br> * 方法说明:设置饼图样式 <br> * 输入参数: <br> * 返回类型: */ public static void pieStyle(JFreeChart chart) { // 设置图表标题字体 chart.setTitle(new TextTitle(chart.getTitle().getText(), titlefont)); PiePlot3D plot = (PiePlot3D) chart.getPlot(); // 设置饼图的图例标签的字体样式 chart.getLegend().setItemFont(illustrationfont); // 指定饼图轮廓线的颜色 plot.setBaseSectionOutlinePaint(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}={1}({2})")); plot.setLabelFont(new Font("SansSerif", Font.TRUETYPE_FONT, 12)); // // 设置分饼颜色 // plot.setSectionPaint(pieKeys[0], new Color(244, 194, 144)); // plot.setSectionPaint(pieKeys[1], new Color(144, 233, 144)); } /** * <br> * 方法说明:设置曲线图样式 <br> * 输入参数: <br> * 返回类型: */ public static void timeSeriesStyle(JFreeChart chart) { // 设置图表标题字体 chart.setTitle(new TextTitle(chart.getTitle().getText(), titlefont)); // 设置折线图的图例标签的字体样式 chart.getLegend().setItemFont(illustrationfont); CategoryPlot plot = (CategoryPlot) chart.getPlot(); // x轴 // 分类轴网格是否可见 plot.setDomainGridlinesVisible(true); // y轴 //数据轴网格是否可见 plot.setRangeGridlinesVisible(true); CategoryAxis domainAxis = plot.getDomainAxis(); domainAxis.setLabelFont(xfont);// X 轴标题 domainAxis.setTickLabelFont(xfont);// x 轴数值 domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); // 横轴上的 ValueAxis rangeAxis = plot.getRangeAxis(); rangeAxis.setLabelFont(yfont);// 设置Y轴字体的大小,样式 rangeAxis.setLabelPaint(Color.BLUE);// 设置Y轴标签字体颜色 rangeAxis.setTickLabelFont(yfont);// 设置Y轴上的数字的字体大小 // 获得renderer LineAndShapeRenderer renderer = new LineAndShapeRenderer(); renderer.setBaseShapesVisible(true); // series 点(即数据点)可见 renderer.setBaseLinesVisible(true); // series 点(即数据点)间有连线可见 renderer.setBaseItemLabelsVisible(true); renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition( ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT)); renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); renderer.setBaseItemLabelFont(new Font("Dialog", 1, 12)); plot.setRenderer(renderer); } }
3、ChartServlet.java
package com.victor.servlet; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.PlotOrientation; import org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset; import com.jfreechart.util.ChartUtil; public class ChartServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String path = getPath() + "fruit.jpg"; File file = new File(path); System.out.print(path); if (!file.exists()){ System.out.print(path); getBarChart(path); } response.sendRedirect("chart.jsp"); } private String getPath() { // 获得当前class文件路径 String path = this.getClass().getClassLoader().getResource("") .getPath(); path = path.substring(1, path.length()-16); return path; } public static void getBarChart(String path) throws IOException { CategoryDataset dataset = getDataSet2(); // 获取柱状图 JFreeChart chart = ChartFactory.createBarChart3D("水果产量"// 图表标题 , "水果"// X轴标题 , "产量"// Y轴标题 , dataset// 数据集 , PlotOrientation.VERTICAL// 图表方向:水平、垂直 , false// 是否显示图例(对于简单的柱状图必须是false) , true// 是否生成工具 , false// 是否生成URL链接 ); // 设置图表样式 ChartUtil.barStyle(chart); FileOutputStream fos_jpg = null; try { fos_jpg = new FileOutputStream(path); ChartUtilities.writeChartAsJPEG(fos_jpg, 0.9f// 分辨率 , chart, 650, 300, null); } finally { try { fos_jpg.close(); } catch (Exception e) { } } } /** * 获取一个演示用的组合数据集对象 * * @return */ public static CategoryDataset getDataSet2() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100, "北京", "苹果"); dataset.addValue(100, "上海", "苹果"); dataset.addValue(100, "广州", "苹果"); dataset.addValue(200, "北京", "梨子"); dataset.addValue(200, "上海", "梨子"); dataset.addValue(200, "广州", "梨子"); dataset.addValue(300, "北京", "葡萄"); dataset.addValue(300, "上海", "葡萄"); dataset.addValue(300, "广州", "葡萄"); dataset.addValue(400, "北京", "香蕉"); dataset.addValue(400, "上海", "香蕉"); dataset.addValue(400, "广州", "香蕉"); dataset.addValue(500, "北京", "荔枝"); dataset.addValue(500, "上海", "荔枝"); dataset.addValue(500, "广州", "荔枝"); return dataset; } }
4、web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet> <servlet-name>ChartServlet</servlet-name> <servlet-class>com.victor.servlet.ChartServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ChartServlet</servlet-name> <url-pattern>/ChartServlet</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
5、效果
- webfreechart.rar (1.5 MB)
- 下载次数: 79
- webfreechart2.rar (1.5 MB)
- 下载次数: 39
发表评论
-
chart
2009-12-08 14:43 1318之前一直在研究jfreechart,但是现在发现有些开源cha ... -
jfreechart在linux(ubuntu)下出现乱码
2009-08-26 15:19 1346项目由windows改为linux(ubuntu)发布 jfe ... -
JFreeChart 实时曲线图
2009-07-22 14:20 2044最近要用到实时曲线图,在网上大概找了一下,有两种实现方式,一种 ... -
jfreechart相关
2009-07-22 14:01 1041实现了柱状图、折线图、饼图、中文问题没有解决 http:// ... -
关于jfreechart的几个知识点
2009-06-11 17:31 2693关于jfreechart的几个知识点 1、文件生成 系统临时 ...
相关推荐
- **`setBackgroundImageAlignment(int alignment)`**:设置背景图片的对齐方式,`alignment`参数取值来自`org.jfree.ui.Align`类的常量,如`Align.LEFT`、`Align.CENTER`等。 - **`setBackgroundImageAlpha(float ...
jreechart的jar包,可以绘制各种图表,java工具包,导入即可使用。
标题"jreechart官网"指的是JFreeChart项目的官方网站,可能是提供下载、文档、示例和更新信息的地方。 描述中提到的"最新的是1.0.19,但是这是常用的版本,最新的不一定是最好的哦",意味着当前JFreeChart的稳定版本...
在使用“jreechart jar包”时,通常需要将其添加到项目的类路径中,以便程序能正确地找到并加载这个库。对于基于Maven或Gradle的项目,可以通过配置依赖来自动管理jar包。对于传统的Java项目,可以直接将jar包复制到...
使用 `javadoc` 工具生成 API 文档,便于开发者参考。 #### 四、JFreeChart 开发者指南 - **概述**:提供了一个全面的指南,帮助开发者深入了解 JFreeChart 的使用方法。 - **指南内容**:覆盖了从基本概念到高级...
jreechart-sources包,java开发图表使用,java工具包。
提供了较新的jar包,关于java使用JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(Gantt charts)等等多种图表,并且可以产生PNG和JPEG格式的...
使用Javadoc工具生成JFreeChart的API文档。 #### 四、JFreeChart开发者指南 **4.1 概览** JFreeChart开发者指南为开发者提供详细的使用指导。 **4.2 指南内容** 包括但不限于: - 如何使用JFreeChart创建图表。 -...
JFreeChart 是一个广泛使用的开源 Java 图形库,它提供了丰富的图表类型,包括柱状图、饼图、线图、散点图等,使得开发者能够在 Java 应用程序、Swing 组件、Web 应用以及服务器端生成高质量的图表。"FJreeChart_A3...
JFreeChart 是一个开源的 Java 图形库,用于生成高质量的图表,包括饼状图、柱状图、线形图等多种类型。在本教程中,我们将深入探讨如何使用 JFreeChart 创建饼状图(Pie Chart),这是一个常用于展示数据部分比例的...
在这个小实验中,我们将探讨如何利用Struts2和JFreeChart库在JSP页面上生成饼图。 **1. Struts2基础** Struts2的核心是Action类,它是业务逻辑的载体。Action类处理用户请求,执行相应的业务逻辑,并将结果转发给视...
支持jreechart、fusionchart的图形组件jar包 接口统一,使用简便
耗时3天,对Struts2+Ibatis+Spring3.0+JreeChart进行了完整整合 包括Spring3.0的事务配置 OSCache二级缓存的配置 log4j实现输出Sql到控制台 JfreeChart与Struts2,Spring3.0的整合 对一个简单的表实现查询,批量删除...
这个库广泛应用于数据分析、报表生成以及可视化展示,尤其在 Java 企业级应用和 Web 应用中非常常见。 **一、JFreeChart 的基本概念与功能** 1. **图表类型**:JFreeChart 支持多种图表类型,如线形图(LineChart...
在Servlet或JSP中,JFreeChart可以与JavaServer Pages (JSP) 或者 JavaServer Faces (JSF) 结合,通过ByteArrayOutputStream将图表转换成JPEG或PNG图片,然后以HTTP响应的方式发送给浏览器。 **五、JFreeChart的...
这个库在1.0.9版本中提供了丰富的功能,适合用于商业应用、数据分析以及报告生成等多个领域。JFreeChart 的核心设计目标是易用性和灵活性,使得开发者能够方便地定制图表的每一个细节。 **1. JFreeChart 库的基本...