`

使用JFreeChart生成带交互功能的统计图例 

阅读更多
a.jsp
代码:
<%@ page language="java"
    import="org.jfree.chart.*,org.jfree.data.general.DefaultPieDataset,org.jfree.chart.plot.PiePlot3D,java.awt.Font,org.jfree.chart.JFreeChart,org.jfree.chart.title.TextTitle,org.jfree.chart.title.LegendTitle,org.jfree.chart.labels.StandardPieToolTipGenerator,org.jfree.chart.urls.StandardPieURLGenerator,org.jfree.chart.entity.StandardEntityCollection,java.io.PrintWriter,org.jfree.chart.servlet.ServletUtilities"
    pageEncoding="utf-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <base href="<%=basePath%>">

        <title>My JSP 'a.jsp' starting page</title>

        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
    
    </head>
    <%
            DefaultPieDataset data = new DefaultPieDataset();
            data.setValue("Spring2.0宝典", 47000);
            data.setValue("轻量级J2EE企业应用实战", 38000);
            data.setValue("基于J2EE的Ajax宝典", 31000);
            data.setValue("Ajax in Action", 25000);
            data.setValue("JavaScript权威指南", 29000);
            PiePlot3D plot = new PiePlot3D(data);
            plot.setLabelFont(new Font("隶书", Font.BOLD, 16));
            JFreeChart chart = new JFreeChart("",
                    JFreeChart.DEFAULT_TITLE_FONT, plot, true);
            chart.setTitle(new TextTitle("图书销量统计图", new Font("黑体", Font.ITALIC,
                    22)));
            LegendTitle legend = chart.getLegend(0);
            legend.setItemFont(new Font("宋体", Font.BOLD,18));

            plot.setToolTipGenerator(new StandardPieToolTipGenerator());
            plot.setURLGenerator(new StandardPieURLGenerator("jfreechart/b.jsp"));
            StandardEntityCollection entityCollection = new StandardEntityCollection();
            ChartRenderingInfo info = new ChartRenderingInfo(entityCollection);
            PrintWriter pw = new PrintWriter(out);
            String filename = ServletUtilities.saveChartAsPNG(chart, 720, 450,
                    info, null);
            ChartUtilities.writeImageMap(pw, "map0", info, false);
        %>
    <body>
        
        <img src="DisplayChart?filename=<%=filename%>" width="720"
            height="450" usemap="#map0"  />
    </body>
</html>


b.jsp
代码:
<%@ page language="java"
    import="org.jfree.chart.*,java.awt.Font,org.jfree.chart.JFreeChart,org.jfree.chart.title.TextTitle,org.jfree.chart.title.LegendTitle,org.jfree.chart.servlet.ServletUtilities,org.jfree.chart.plot.PlotOrientation,org.jfree.chart.plot.CategoryPlot,org.jfree.chart.axis.NumberAxis,org.jfree.chart.axis.CategoryAxis,org.jfree.chart.axis.CategoryLabelPositions,org.jfree.data.category.CategoryDataset,org.jfree.data.category.DefaultCategoryDataset"
    pageEncoding="UTF-8"%>

<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <base href="<%=basePath%>">

        <title>My JSP 'b.jsp' starting page</title>

        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

    </head>

    <body>
        <%
           
            CategoryDataset dataset;
            String queryString = request.getQueryString();
            queryString = java.net.URLDecoder.decode(queryString, "UTF-8");
            String category = null;
            String[] queryStrings=queryString.split("&");
            for (int i = 0; i < queryStrings.length; i++) {
            String[] nameValue = queryStrings[i].split("=");
            category = nameValue[0].equals("category") ? nameValue[1]
            : category;
            } 
            
            String subTitle = "";
            if (category.equals("Spring2.0宝典")
                    || category.equals("轻量级J2EE企业应用实战")
                    || category.equals("基于J2EE的Ajax宝典")) {
                dataset = leeGetDataSet();
                subTitle = "作者李刚的";
            } else {
                dataset = getDataSet();
                subTitle = "其它";
            }
            String title = subTitle + "图书的销售情况";
            JFreeChart chart = ChartFactory.createBarChart3D(title, "月份", "销量",
                    dataset, PlotOrientation.VERTICAL, true, false, false);
            chart.setTitle(new TextTitle(title, new Font("黑体", Font.ITALIC,
                    22)));
            LegendTitle legend = chart.getLegend(0);
            legend.setItemFont(new Font("宋体", Font.BOLD, 20));//设置图例的字体
            CategoryPlot plot = (CategoryPlot) chart.getPlot();

            CategoryAxis categoryAxis = plot.getDomainAxis();//取得横轴
            categoryAxis.setLabelFont(new Font("宋体", Font.BOLD, 22));//设置横轴显示标签的字体
            categoryAxis
                    .setCategoryLabelPositions(CategoryLabelPositions.UP_45);//分类标签以45度倾斜
            categoryAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 18));//分类标签字体

            NumberAxis numberAxis = (NumberAxis) plot.getRangeAxis();//取得纵轴
            numberAxis.setLabelFont(new Font("宋体", Font.BOLD, 22));

            String filename = ServletUtilities.saveChartAsPNG(chart, 650, 390,
                    null, session);
        %>

        <img src="DisplayChart?filename=<%=filename%>" width="720"
            height="450" border="0"  />

    </body>
    <%!private static CategoryDataset getDataSet() {
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(47000, "Ajax in Action", "06年10月");
        dataset.addValue(38000, "Ajax in Action", "06年11月");
        dataset.addValue(31000, "Ajax in Action", "06年12月");
        dataset.addValue(25000, "Ajax in Action", "07年01月");
        dataset.addValue(45000, "Ajax in Action", "07年02月");
        dataset.addValue(28000, "Ajax in Action", "07年03月");
        dataset.addValue(42000, "JavaScript权威指南", "06年10月");
        dataset.addValue(31000, "JavaScript权威指南", "06年11月");
        dataset.addValue(41000, "JavaScript权威指南", "06年12月");
        dataset.addValue(35000, "JavaScript权威指南", "07年01月");
        dataset.addValue(25000, "JavaScript权威指南", "07年02月");
        dataset.addValue(18000, "JavaScript权威指南", "07年03月");
        return dataset;
    }

    private static CategoryDataset leeGetDataSet() {
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(42000, "Spring2.0宝典", "06年10月");
        dataset.addValue(18000, "Spring2.0宝典", "06年11月");
        dataset.addValue(51000, "Spring2.0宝典", "06年12月");
        dataset.addValue(25000, "Spring2.0宝典", "07年01月");
        dataset.addValue(35000, "Spring2.0宝典", "07年02月");
        dataset.addValue(26000, "Spring2.0宝典", "07年03月");
        dataset.addValue(47000, "轻量级J2EE企业应用实战", "06年10月");
        dataset.addValue(38000, "轻量级J2EE企业应用实战", "06年11月");
        dataset.addValue(31000, "轻量级J2EE企业应用实战", "06年12月");
        dataset.addValue(25000, "轻量级J2EE企业应用实战", "07年01月");
        dataset.addValue(25000, "轻量级J2EE企业应用实战", "07年02月");
        dataset.addValue(25000, "轻量级J2EE企业应用实战", "07年03月");
        dataset.addValue(43000, "基于J2EE的Ajax宝典", "06年10月");
        dataset.addValue(28000, "基于J2EE的Ajax宝典", "06年11月");
        dataset.addValue(37000, "基于J2EE的Ajax宝典", "06年12月");
        dataset.addValue(20000, "基于J2EE的Ajax宝典", "07年01月");
        dataset.addValue(35000, "基于J2EE的Ajax宝典", "07年02月");
        dataset.addValue(15000, "基于J2EE的Ajax宝典", "07年03月");
        return dataset;
    }%>

</html>

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>DisplayChart</servlet-name>
        <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>    
    </servlet>
    <servlet-mapping>
        <servlet-name>DisplayChart</servlet-name>
        <url-pattern>/DisplayChart</url-pattern>
    </servlet-mapping>
    
</web-app>


分享到:
评论

相关推荐

    JFreechart自定义图例

    JFreeChart库本身并不直接提供高度定制的图例功能,但通过扩展其API,我们可以创建自己的图例行为。下面是一些关于如何自定义JFreeChart图例的关键知识点: 1. **创建自定义图例项**: JFreeChart允许你为每个图表...

    在 JavaFx 中使用 JFreeChart 生成图表

    以上就是在JavaFX中使用JFreeChart生成图表的基本流程。为了使图表更具交互性,还可以添加事件监听器,如点击图表元素时触发特定操作。此外,JFreeChart提供了丰富的配置选项,可以调整图表的外观,如颜色、线条样式...

    jfreechart 生成折线图,饼图,柱状图,堆栈柱状图

    此外,这个服务类可能还涉及数据加载、转换和存储,以及处理用户交互,比如根据用户请求动态生成新的图表。 总之,JFreeChart是Java开发中强大的图表生成工具,通过`CreateChartServiceImpl.java`这样的服务类,...

    java生成报表JFreeChart

    接下来,我们详细探讨如何使用JFreeChart生成各种类型的图表: 1. **柱状图(Bar Chart)**:柱状图常用于比较不同类别的数据。使用JFreeChart创建柱状图,首先需要创建一个CategoryDataset,然后用这个数据集来...

    struts2+MySQL+jfreechart生成带热点

    在"struts2+MySQL+jfreechart生成带热点"的场景中,我们可以构建一个Web应用,该应用能够从MySQL数据库中检索数据,然后使用JFreeChart生成包含热点的图表。热点是指图表上的区域,当用户点击这些区域时,可以触发...

    JSP使用JFreeChart生成各种图表并生成PDF文档

    对于图表,可以将之前用JFreeChart生成的PNG图片作为`Image`对象添加。 5. **关闭文档**: 最后,记得调用`Document.close()`方法关闭文档,确保所有内容都被写入。 在实际应用中,你可能需要根据用户请求动态生成...

    用jfreechart来生成统计图表.doc

    在使用 jFreeChart 生成统计图表时,首先需要将 jfreechart.jar 和 jcommon.jar 添加到项目的类路径中。这两个 JAR 文件包含了所有必要的类和资源,使得你可以轻松地在 Java 应用程序中集成图表功能。 例如,要创建...

    JfreeChart画双Y轴折线图

    虽然在本案例中,我们没有直接涉及BIRT,但在大型项目中,JFreeChart生成的图表可能会被嵌入到BIRT报告中,以提供更高级别的数据可视化。 总的来说,掌握JFreeChart画双Y轴折线图的能力,意味着你可以更有效地展示...

    jfreechart生成单组3D变色柱状图

    #### 1.1 标题:“jfreechart生成单组3D变色柱状图” 标题明确指出本篇教程的目标是使用JFreeChart库生成一种特定类型的图表——3D变色单组柱状图。这里的关键信息包括: - **jfreechart**:一个Java图形绘制类库。...

    java使用JFreeChart制作柱形图

    Java 使用 JFreeChart 创建柱形图是一种常见的数据可视化方法,尤其在数据分析和Web应用程序中。JFreeChart 是一个强大的开源库,它提供了多种图表类型,包括柱形图、饼图、线图等,使得开发者能够方便地将数据转化...

    使用JFreeChart制作各种美丽动人的统计图表

    在实际开发中,JFreeChart可以与Swing、JavaFX等图形用户界面库结合,生成交互式的图表,用户可以通过点击、缩放等操作来探索数据。此外,JFreeChart还可以导出图表为图片文件(如PNG、JPEG),以便在报告或网页中...

    Java JFreeChart 后台生成折线图

    以上就是使用Java JFreeChart库在后台生成折线图的基本流程。饼图和柱状图的生成原理类似,只需替换相应的`ChartFactory`方法(如`createPieChart()`或`createBarChart()`),并调整数据集的结构以适应不同图表的...

    jfreechart折线图demo

    例如,`jquery.jqplot.js` 是一个基于 JQuery 的图表库,它可以与 JFreeChart 生成的折线图数据相结合,实现动态更新、缩放、平移等功能。 5. **相关库的使用** - **jQuery**: 一个流行的 JavaScript 库,简化了 ...

    java统计图的生成-jfreechart-1.0.1.zip

    Java统计图生成库JFreeChart是一个强大的开源工具,专为Java开发者设计,用于创建各种复杂的图表,如柱状图、饼图和折线图。它提供了丰富的功能和灵活性,使得在应用程序中集成可视化数据变得非常容易,而无需深入...

    生成 JFreeChart 报表

    **生成 JFreeChart 报表** 在Java编程中,生成美观且功能丰富的图表是一项重要的任务,特别是在数据分析和可视化领域。JFreeChart库是Java社区中广泛使用的开源图表库,它提供了一种简单而强大的方式来创建各种类型...

    jfreechart统计图的WEB打照

    为了在Web上展示JFreeChart生成的图表,我们需要一个容器来承载这些图片。这可以是HTML的`&lt;img&gt;`标签,或者是使用`&lt;iframe&gt;`或者JavaScript来加载。确保正确设置图表的大小,以适应不同的设备和屏幕尺寸。 集成...

    java中的报表(jfreeChart原创)

    除了基本的图表功能,JFreeChart 还可用于创建复杂的统计图和金融图表,如甘特图、箱线图、热力图等。 总的来说,JFreeChart 为 Java 开发者提供了一套强大且灵活的工具,用于创建各种类型的图表,无论是简单的...

    jfreechart+cewolf的架包

    1. **使用JFreeChart生成图表**:根据业务需求,利用JFreeChart API创建所需的图表对象。 2. **配置Cewolf**:在Web应用的部署描述符(如web.xml)中添加Cewolf Servlet的配置信息。 3. **发送请求**:当用户请求...

    jfreechart使用必须用到的包

    在Java应用程序或Web应用中,如果你需要生成高质量的图表,JFreeChart是一个值得信赖的选择。在使用JFreeChart时,通常会依赖两个核心的jar文件:`jfreechart.jar`和`jcommon.jar`。 1. `jfreechart.jar`: 这是...

    jfreechart使用的3个jar包

    **JFreeChart 使用详解** JFreeChart 是一个用于 Java 的开源图表库,它提供了一种简单的方法来创建各种复杂的图表,如折线图、...理解这些库的功能和交互方式,能让你更好地利用 JFreeChart 实现数据可视化的需求。

Global site tag (gtag.js) - Google Analytics