`
lengchaotian
  • 浏览: 281204 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

JFreechart折线图web实现

 
阅读更多

web.xml配置JFreeChart

 

<servlet>
 		<servlet-name>jfreechart</servlet-name>
 		<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>jfreechart</servlet-name>
		<url-pattern>/servlet/DisplayChart</url-pattern>
	</servlet-mapping>

 

折线图的业务实现:

 

import java.awt.Font;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;

    /** 
     * 生成折线图
     */
    public String makeLine(String lineName, String xName, String yName ,int width ,int height,HttpServletRequest request) {
        
        List<String[]> data = dateList();
        
        CategoryDataset linedataset = this.getDataSet(data);

        JFreeChart chart = ChartFactory.createLineChart(lineName, // chart title
                xName, // domain axis label
                yName, // range axis label
                linedataset, // data
                PlotOrientation.VERTICAL, // orientation
                true, // include legend
                true, // tooltips
                false // urls
                );
        setImageFont(chart);
        CategoryPlot line = chart.getCategoryPlot();
        // customise the range axis...
        NumberAxis rangeAxis = (NumberAxis) line.getRangeAxis();
        rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
        rangeAxis.setAutoRangeIncludesZero(true);
        rangeAxis.setUpperMargin(0.20);
        rangeAxis.setLabelAngle(Math.PI / 2.0);
        line.setRangeAxis(rangeAxis);
        String imagePath_area=null;
        try {
        //生成图片
        String filename = ServletUtilities.saveChartAsPNG(chart, 600, 400, null, request.getSession());
        
        ServletContext servlet = request.getServletContext();
        
        //得到功能路径
        imagePath_area = servlet.getContextPath() + "/servlet/DisplayChart?filename=" + filename;
        
        
        
        }catch(Exception e){
            e.printStackTrace();
        }
        System.out.println("结束");
        return imagePath_area;
    }
    
    /**
     * 解决乱码问题
     */
    private void setImageFont(JFreeChart chart)
    {
        CategoryPlot plot = (CategoryPlot)chart.getPlot();
        CategoryAxis domainAxis = plot.getDomainAxis();
        ValueAxis numberaxis = plot.getRangeAxis();
        
        //设置标题文字 
        chart.getTitle().setFont(new Font("宋体", Font.BOLD, 12));
        
        //设置X轴坐标上的文字    
        domainAxis.setTickLabelFont(new Font("黑体", Font.PLAIN, 11));
        
        //设置X 轴的标题文字  
        domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
        
        //设置Y 轴坐标上的文字   
        numberaxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));
        
        //设置Y 轴的标题文字
        numberaxis.setLabelFont(new Font("黑体", Font.PLAIN, 12));
        
        //设置底部文字 
        chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));
    }
    //构建数据
    private CategoryDataset getDataSet(List<String[]> data){
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        for(String[] ss : data){
            dataset.addValue(Double.valueOf(ss[0]), ss[1], ss[2]);
        }
        return dataset;
    }
    
    public List<String[]> dateList(){
        List<String[]> list = new ArrayList<String[]>();
        String[] s1 = {"10" ,"北京" ,"2010"};
        String[] s2 = {"15" ,"北京" ,"2011"};
        String[] s3 = {"20" ,"北京" ,"2012"};
        String[] s4 = {"13" ,"北京" ,"2013"};
        String[] s5 = {"17" ,"北京" ,"2014"};
        String[] s6 = {"50" ,"北京" ,"2015"};
        
        String[] z1 = {"25" ,"上海" ,"2010"};
        String[] z2 = {"30" ,"上海" ,"2011"};
        String[] z3 = {"5" ,"上海" ,"2012"};
        String[] z4 = {"60" ,"上海" ,"2013"};
        String[] z5 = {"30" ,"上海" ,"2014"};
        String[] z6 = {"0" ,"上海" ,"2015"};
        
        list.add(s1);
        list.add(s2);
        list.add(s3);
        list.add(s4);
        list.add(s5);
        list.add(s6);
        
        list.add(z1);
        list.add(z2);
        list.add(z3);
        list.add(z4);
        list.add(z5);
        list.add(z6);
        
        return list;
    }

 

 

Spring MVC Controller 控制器

  @RequestMapping("/getAllReportRule")
    public ModelAndView getAllReportRule(HttpServletRequest request, HttpServletResponse response,
        ReportRuleInfo reportRule) throws Exception
    {
           //创建LineDraw对象,调用makeLine方法得到折线图
        LineDraw lineDraw = new LineDraw();
        
        String fileName= lineDraw.makeLine("测试图", "年份", "吨", 600, 500, request);
        
        List<ReportRuleInfo> reportList = reportService.getAllReportRule(reportRule);
        request.setAttribute("reportList", reportList);
        request.setAttribute("report", reportRule);
        
        //把得到的图片放到request范围里面
      request.setAttribute("fileName", fileName);
        return new ModelAndView("warning/report_rule_list");
    }

 

JSP页面代码:

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>折线图显示</title>
		
</script>
	</head>
	<body>
		<table width="99%" cellpadding="0" cellspacing="0" border="0"
			align="center">
			<tr>
				<td>
					<img alt="abc" src="${fileName}">
				</td>
			</tr>
		</table>
	</body>
</html>

 

 

  • 大小: 80.6 KB
分享到:
评论

相关推荐

    jfreechart 折线图的一个例子

    **JFreeChart 折线图实例详解** JFreeChart 是一个强大的 Java 图形库,它提供了丰富的图表类型,包括折线图、柱状图、饼图等,适用于各种数据分析和展示场景。在这个例子中,我们将深入探讨如何使用 JFreeChart ...

    JSP利用JFreeChart生成折线图

    在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,而JFreeChart则是一个强大的Java图表库,能够帮助开发者生成各种复杂的图表,包括折线图。本教程将详细介绍如何在JSP中利用JFreeChart库来...

    JFreeChart饼图、折线图等资料学习

    JFreeChart是一款强大的Java图形库,它允许开发者创建多种类型的图表,包括饼图、折线图、柱状图、散点图以及更多其他类型的图表。这个资料包包含了JFreeChart的核心库(jfreechart-1.0.16.jar)和其依赖库JCommon...

    JFreeChart双Y轴折线图实例,可以直接运行

    JFreeChart双Y轴折线图实例,可以直接运行,实例类为LineChartDemo1.JAVA,有注释。 若想在web工程使用只需如下。 String filename = ServletUtilities.saveChartAsPNG(jfreechart, 600, 400, null, session); ...

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

    JFreeChart 是一个开源的Java库,用于生成高质量的2D图表,如折线图、饼图、柱状图和堆栈柱状图等。它广泛应用于数据分析、报告和应用程序中,提供丰富的自定义选项来满足各种视觉需求。在本项目中,你将找到能够...

    jfreechart 折线图、饼状图、柱状图

    JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的图表,包括折线图、饼状图和柱状图等,这些图表广泛应用于数据分析、报表展示以及Web应用程序中。本项目提供了一个实例,展示了如何在Web页面上使用...

    java里用JFreeChart画柱状图、折线图、雷达图

    在Java编程环境中,JFreeChart库是一个强大的工具,用于创建各种复杂的图表,包括柱状图、折线图和雷达图。这些图表对于数据可视化和数据分析非常有用,可以帮助开发者直观地展示大量信息。以下是对给定文件中每个...

    web工程jFreeChart展示导出折线图

    在这个“web工程jFreeChart展示导出折线图”的项目中,我们将探讨如何在IDEA Maven环境下利用JFreeChart生成折线图并在前端展示,以及如何实现图表的导出功能。 ### 1. JFreeChart简介 JFreeChart是一个开源的Java...

    JfreeChart画双Y轴折线图

    在Java编程领域,JFreeChart是一个非常流行的图表库,它允许开发者创建各种复杂的数据可视化图形,包括折线图、柱状图、饼图等。在本篇博客中,"JfreeChart画双Y轴折线图"的主题,将探讨如何使用JFreeChart库来创建...

    JFreeChart实时折线图

    在本场景中,我们关注的是如何使用JFreeChart来实现实时更新的折线图。下面将详细介绍这个过程。 首先,JFreeChart的使用通常分为以下几个步骤: 1. **创建图表**: 首先,你需要创建一个`JFreeChart`对象。这可以...

    java绘制图表(柱状图、饼图、折线图)包 jfreechart

    在JFreeChart中,你可以使用`TimeSeriesCollection`来存储时间序列数据,然后通过`createXYLineChart()`方法生成折线图。此外,JFreeChart还支持日期和时间轴,让时间相关的数据可视化更加精确。 除了这些基本图表...

    jfreechart jsp 结合 折线图

    本篇文章将详细介绍如何利用JFreeChart与JSP结合,实现动态生成并显示折线图,以及在MyEclipse工程中的具体操作步骤。 首先,要理解JFreeChart的工作原理。JFreeChart提供了一系列的类和方法,通过这些我们可以创建...

    JFreeChart 饼图,柱图,折线图

    JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的图表,包括饼图、柱状图和折线图。在Java应用中,JFreeChart是一个不可或缺的工具,尤其在数据分析、报表生成或可视化数据的场景下。下面我们将深入...

    jfreechart 图形折线,饼图,柱状图等

    JFreeChart 是一个广泛使用的开源 Java 图形库,它允许开发人员轻松地创建各种图表,包括折线图、饼图和柱状图。这个库为 Java 应用程序提供了丰富的图表功能,适用于数据可视化的需求,无论是简单的报告还是复杂的...

    JFreeChart做折线图.zip

    总的来说,JFreeChart是一个功能强大且灵活的Java图表库,能够帮助开发者轻松地在Java应用或Web应用中创建美观的图表,而本项目则展示了如何使用它来生成折线图。无论是进行数据分析展示还是构建交互式界面,...

    JFreeChart 各种图形的 web工程

    JFreeChart是一款强大的Java图形库,它为开发者提供了绘制各种复杂图表的能力,包括折线图、饼形图、柱状图、域状图以及组合图表等。这个特定的例子是将JFreeChart应用于Web工程中,解决了在Web环境下可能出现的乱码...

    使用JFreeChart绘画条形图、饼状图以及折线图

    在Java Web开发中,JFreeChart是一个非常强大的库,它允许开发者创建各种类型的图表,包括条形图(Bar Chart)、饼状图(Pie Chart)和折线图(Line Chart)。这些图表可以用于数据可视化,帮助用户更好地理解复杂的...

    折线图jfreechart

    综上所述,本案例详细介绍了如何使用 JFreeChart 在 Java Web 应用程序中实现折线图统计的功能。通过创建并填充数据集,创建图表,最后将其导出并在网页上展示,可以有效地将复杂的数据以直观的图形形式展现出来。这...

    jfreechart 与struts2的柱状图以及折线图例子

    本篇文章将深入探讨如何在Struts2框架下利用JFreeChart创建柱状图和折线图。 **JFreeChart简介** JFreeChart是一个强大的Java图表库,它支持生成各种类型的图表,包括柱状图、折线图、饼图、散点图等。JFreeChart...

Global site tag (gtag.js) - Google Analytics