首页 > 其他 > 详细

jfreechart曲线图

时间:2015-03-23 13:36:41      阅读:237      评论:0      收藏:0      [点我收藏+]

1、JAR包下载

           官网下载地址:http://sourceforge.net/projects/jfreechart/files/


2、lib中引入JAR包

               jfreechart-x.x.xx.jar

          jcommon--x.x.xx.jar


3、配置web.xml

          <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>


4、源码实例

    /**
     * @Description: 获取身高年龄折线图
     * @param request 请求信息
     * @return 身高年龄折线图
     * @date 2015年3月20日 上午11:37:37
     * @version 1.0
     */
    @RequestMapping("getHeightAgeChart.do")
    @ResponseBody
    public String createHeightAgeChart(HttpServletRequest request){
        String title = "身高—年龄成长曲线";    // 报表题目,字符串类型
        String xtitle = "年龄(月)";            // 横轴标题
        String rangTitle = "身高(cm)";        // 纵(值)轴名称
        double rangNumber = 10;                // 值轴刻度(纵坐标间距值)
        XYSeriesCollection dataset = new XYSeriesCollection();
        XYSeries s1 = new XYSeries("小明");
        s1.add(0,48);
        s1.add(3,50);
        s1.add(6,60);
        s1.add(8,70);
        s1.add(12,75);
        s1.add(18,82);
        s1.add(24,88);
        s1.add(30,91);
        s1.add(36,96);
        dataset.addSeries(s1);
        XYSeries s2 = new XYSeries("小芳");
        s2.add(0,50);
        s2.add(3,55);
        s2.add(6,65);
        s2.add(8,75);
        s2.add(12,80);
        s2.add(18,87);
        s2.add(24,92);
        s2.add(30,98);
        s2.add(36,108);
        dataset.addSeries(s2);
        return XYSplineRendererGo(dataset, title, xtitle, rangTitle, rangNumber, request);
    }

    /**
     * @Description:  构建折线图(圆滑曲线图)
     * @param request 请求信息
     * @return 身高年龄折线图
     * @date 2015年3月20日 上午11:37:37
     * @version 1.0
     */

    private String XYSplineRendererGo(XYSeriesCollection dataset, String title, String xtitle, String rangTitle, double rangNumber, HttpServletRequest request){
        JFreeChart chart = ChartFactory.createXYLineChart(
                title,        // 报表题目,字符串类型
                xtitle,        // 横轴标题
                rangTitle,    // 纵(值)轴名称
                dataset,    // 数据集
                PlotOrientation.VERTICAL,
                true,        // 显示图例
                false,
                false
            );
        // 设置图表标题的字体   
        Font font = new Font("黑体",Font.CENTER_BASELINE,20);
        chart.getTitle().setFont(font);
        
        // 设置图例字体
        Font xfont = new Font("宋体",Font.PLAIN,12);
        chart.getLegend().setItemFont(xfont);
        
        XYPlot plot = (XYPlot) chart.getPlot();
        ValueAxis domainAxis= plot.getDomainAxis();
        domainAxis.setLowerMargin(0.1);// 设置距离图片左端距离此时为10%
        domainAxis.setUpperMargin(0.1);// 设置距离图片右端距离此时为百分之10
        domainAxis.setLabelFont(xfont);// X轴标题
        domainAxis.setTickLabelFont(xfont);// X轴数值
        domainAxis.setTickLabelPaint(Color.BLUE) ;    // 字体颜色
        
        NumberAxis  rangeAxis=(NumberAxis)plot.getRangeAxis();
        rangeAxis.setUpperMargin(0.1);// 设置最高的一个柱与图片顶端的距离(最高柱的10%)
        rangeAxis.setLabelFont(xfont);// Y轴标题
        rangeAxis.setTickLabelFont(xfont);// Y轴数值
        rangeAxis.setLabelPaint(Color.BLUE) ;// 字体颜色  
        rangeAxis.setTickLabelFont(xfont);
        NumberFormat numberformat = new DecimalFormat("0");
        rangeAxis.setNumberFormatOverride(numberformat);// 设置y轴以百分比方式显示
        
        //平滑曲线
        XYItemRenderer renderer = new XYSplineRenderer();
        renderer.setItemLabelPaint(Color.black);//字体为黑色
        renderer.setItemLabelsVisible(true);
        renderer.setItemLabelFont(font);
        //采集点采用百分比
//        NumberFormat nfP = NumberFormat.getPercentInstance();
//        nfP.setMaximumFractionDigits(2); //百分数格式
//        renderer.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator("{2}",NumberFormat.getPercentInstance(),NumberFormat.getPercentInstance()));
        plot.setRenderer(renderer);
        String filename;
        String graphURL = "";
        int width = 850;
        int height = 700;
        
        try {
            filename = ServletUtilities.saveChartAsJPEG(chart, width, height, request.getSession());
            graphURL= request.getContextPath() + "/DisplayChart?filename=" + filename;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return graphURL;
    }


后台返回为绘制成图片的图表地址字符串,在前台可以使用任意元素接收

jfreechart曲线图

原文:http://blog.csdn.net/zzq2yz1314/article/details/44561039

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!