天天看点

jfreechart曲线图

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、源码实例

    @RequestMapping("getHeightAgeChart.do")

    @ResponseBody

    public String createHeightAgeChart(HttpServletRequest request){

        String title = "身高—年龄成长曲线";    // 报表题目,字符串类型

        String xtitle = "年龄(月)";            // 横轴标题

        String rangTitle = "身高(cm)";        // 纵(值)轴名称

        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 ReportTool .XYSplineRendererGo(dataset, title, xtitle, rangTitle, request);

    }

public class ReportTool {

    public static String XYSplineRendererGo(XYSeriesCollection dataset, String title, String xtitle, String rangTitle, 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 = 800;

        int height = 600;

        try {

            filename = ServletUtilities.saveChartAsJPEG(chart, width, height, request.getSession());

            graphURL= request.getContextPath() + "/DisplayChart?filename=" + filename;

        } catch (IOException e) {

            e.printStackTrace();

        }

        return graphURL;

    }

}

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

注:之后看了别人的博客,写的不错,弄个连接以后看

http://juliana-only.iteye.com/blog/393266