jfreeChart创建折线图实际应用

    @RequestMapping(value = "jfreeChartLineTset")
     public String jfreeChartLineTset(HttpServletRequest request){
        
        CategoryDataset createDataset = createDataset();
        JFreeChart createLineChart = createLineChart("收文数据统计", "收文类型", "数量", createDataset);
        createLineChart.setBackgroundImageAlpha(0.2F);
        FileOutputStream fosChart = null;
        try {
            //文件夹不存在则创建
            /*File file = new File("D:\\jfreechart");
            if (!file.exists()) {
                file.mkdirs();
            }*/
            String chartName =  request.getSession().getServletContext().getRealPath("/static/")+"/jfreeChart/jfreechartLine.jpeg";
            fosChart = new FileOutputStream(chartName);
            ChartUtilities.writeChartAsPNG(fosChart, createLineChart, 1000, 320);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                fosChart.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
         return "modules/personplan/jfreeChart";
     }
    
    public  JFreeChart createLineChart(
            String chartTitle, String x,
            String y, CategoryDataset dataset) {
     
        // 构建一个chart
        JFreeChart chart = ChartFactory.createLineChart(
                chartTitle,
                x,
                y,
                dataset,
                PlotOrientation.VERTICAL,
                true,
                true,
                false);
        //字体清晰
        chart.setAntiAlias(false);
        // 设置背景颜色
        chart.setBackgroundPaint(Color.WHITE);
     
        // 设置图标题的字体
        Font font = new Font("隶书", Font.BOLD, 25);
        chart.getTitle().setFont(font);
     
        // 设置面板字体
        Font labelFont = new Font("SansSerif", Font.TRUETYPE_FONT, 12);
        // 设置图示的字体
        chart.getLegend().setItemFont(labelFont);
     
        CategoryPlot categoryplot = (CategoryPlot) chart.getPlot();
        // x轴 // 分类轴网格是否可见
        categoryplot.setDomainGridlinesVisible(false);
        // y轴 //数据轴网格是否可见
        categoryplot.setRangeGridlinesVisible(false);
        categoryplot.setRangeGridlinePaint(Color.WHITE);// 虚线色彩
        categoryplot.setDomainGridlinePaint(Color.WHITE);// 虚线色彩
        categoryplot.setBackgroundPaint(Color.cyan);// 折线图的背景颜色
     
        // 没有数据时显示的文字说明
        categoryplot.setNoDataMessage("没有数据显示");
        
        // 设置折线的透明度
        /*categoryplot.setForegroundAlpha(0.2F);*/
        /*categoryplot.setBackgroundImageAlpha(0.2F);*/
        // 设置背景图透明度
        
        // 设置轴和面板之间的距离
         categoryplot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D));
     
        // 横轴 x
        CategoryAxis domainAxis = categoryplot.getDomainAxis();
        domainAxis.setLabelFont(labelFont);// 轴标题
        domainAxis.setTickLabelFont(labelFont);// 轴数值
        // domainAxis.setLabelPaint(Color.BLUE);//轴标题的颜色
        // domainAxis.setTickLabelPaint(Color.BLUE);//轴数值的颜色
     
        // 横轴 lable 的位置 横轴上的 Lable 45度倾斜 DOWN_45
       /* domainAxis.setCategoryLabelPositions(CategoryLabelPositions.STANDARD);*/

        domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
        // 设置距离图片左端距离
        domainAxis.setLowerMargin(0.0);
        // 设置距离图片右端距离
        domainAxis.setUpperMargin(0.0);
     
        // 纵轴 y
        NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis();
        numberaxis.setLabelFont(labelFont);
        numberaxis.setTickLabelFont(labelFont);
        numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
        numberaxis.setAutoRangeIncludesZero(true);
     
        // 获得renderer 注意这里是下嗍造型到lineandshaperenderer!!
        LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer) categoryplot
                .getRenderer();
        
        //是否显示折点
        lineandshaperenderer.setBaseShapesVisible(true); // series 点(即数据点)可见
        lineandshaperenderer.setBaseLinesVisible(true); // series 点(即数据点)间有连线可见
     
        // 显示折点数据
        lineandshaperenderer
                .setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
        lineandshaperenderer.setBaseItemLabelsVisible(true);
     
        return chart;
    }
    
    
    
    
         /**
          * 取出不同收文的数据
         * 折现图数据集
         *
         * @return
         */
    @RequestMapping(value = "createDataset")
        public CategoryDataset createDataset() {
            String str1 = "集团收文";
            String str2 = "党委收文";
            String str3 = "纪委收文";
            String str4 = "工会收文";
            String str5 = "团委收文";
            String str6 = "管理所收文";
            String str7 = "工会分会收文";
            String str8 = "党支部收文";
            String str9 = "集团扶贫办收文";
            String str10 = "养护单位收文"; 
            String str11 = "地方收文";
            String str12 = "交通厅公安局收文";
            String str13 = "法院文书收文";
            String str14 = "通知收文";
            
            String str15 = "数量";
            
            
            DefaultCategoryDataset dataset = new DefaultCategoryDataset();
            
            // 通过isFlag 查找指定类型收文
            dataset.addValue(jjbgSwService.findSwByFlag("3").size(), str15, str1);
            dataset.addValue(jjbgSwService.findSwByFlag("2").size(), str15, str2);
            dataset.addValue(jjbgSwService.findSwByFlag("4").size(), str15, str3);
            dataset.addValue(jjbgSwService.findSwByFlag("5").size(), str15, str4);
            dataset.addValue(jjbgSwService.findSwByFlag("6").size(), str15, str5);
         
            dataset.addValue(jjbgSwService.findSwByFlag("7").size(), str15, str6);
            dataset.addValue(jjbgSwService.findSwByFlag("8").size(), str15, str7);
            dataset.addValue(jjbgSwService.findSwByFlag("9").size(), str15, str8);
            dataset.addValue(jjbgSwService.findSwByFlag("10").size(), str15, str9);
            dataset.addValue(jjbgSwService.findSwByFlag("11").size(), str15, str10);
         
            dataset.addValue(jjbgSwService.findSwByFlag("12").size(), str15, str11);
            dataset.addValue(jjbgSwService.findSwByFlag("13").size(), str15, str12);
            dataset.addValue(jjbgSwService.findSwByFlag("14").size(), str15, str13);
            dataset.addValue(jjbgSwService.findSwByFlag("15").size(), str15, str14);
            return dataset;
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值