`
dragon0929
  • 浏览: 77670 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

使用jfreechart创建柱状图、饼图

阅读更多

柱图:

private String createYXChart(String fileName, Map dataMap,String chartTitle,int days,HashMap labelMap,Date fromDate,Date endDate,HttpServletRequest request,int width,int height) throws Exception {
            String path = request.getSession().getServletContext().getRealPath("/images/temp/");
            Calendar cal = Calendar.getInstance();
//            String filename=cal.getTimeInMillis()+".png";
            String filename=fileName;
            String chartFileName = path + "/"+filename;
           
            SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
            DefaultCategoryDataset dataset = new DefaultCategoryDataset();
            cal.setTime(fromDate);
            for (int i = 0; i < days; i++) {
                String curDay = format.format(cal.getTime());
                if (dataMap.get(curDay)!=null){
                    Object vl=dataMap.get(curDay);
                    Long value1= Long.valueOf(vl.toString());
                    dataset.addValue(value1, "", curDay.substring(4));
                }else{
                    dataset.addValue(0, "", curDay.substring(4));
                }
                cal.add(Calendar.DAY_OF_MONTH, 1);
            }
           
            JFreeChart chart = ChartFactory.createBarChart3D(chartTitle, "the latest "+days+" days", format.format(fromDate) + "-" + format.format(endDate), dataset, PlotOrientation.VERTICAL, false, false, false);
            chart.setBackgroundPaint(new Color(0xE1E1E1)); 
            CategoryPlot plot = chart.getCategoryPlot();
            // Set Y-axis
            NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
            rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
             
            CategoryAxis domainAxis = plot.getDomainAxis();
            //Set the distance from the left picture
            domainAxis.setLowerMargin(0.01);
            domainAxis.setTickLabelFont(new Font("arial",Font.PLAIN,8));
             
            BarRenderer3D renderer = new BarRenderer3D();
            //Set column's color
            renderer.setSeriesPaint(0, new Color(0xff00));

            plot.setRenderer(renderer);
           
            File file = new File(chartFileName);  
             
            ChartUtilities.saveChartAsPNG(file,chart,width,height);
            return filename;
        }

 

饼图:

private String createPieChart(String fileName, Map dataMap,String chartTitle,String title, Map labelMap,String fromDate,String endDate,HttpServletRequest request,int width,int height) throws Exception {
        String path = request.getSession().getServletContext().getRealPath("/images/temp/");
//        Calendar cal = Calendar.getInstance();
        String filename = fileName;
        String chartFileName = path + "/"+filename;
       
        DefaultPieDataset dataset = new DefaultPieDataset();
        //put chart data
        for(Iterator item=dataMap.keySet().iterator();item.hasNext();){
            Object obj=(Object)item.next();
            if (labelMap!=null && labelMap.get(obj)!=null){
                dataset.setValue(labelMap.get(obj).toString(),Integer.parseInt(dataMap.get(obj).toString()));
            }else{
                dataset.setValue(obj.toString(),Integer.parseInt(dataMap.get(obj).toString()));
            }
        }
       
        // Change the property of the chart
        JFreeChart chart = ChartFactory.createPieChart3D(chartTitle,dataset,false, true, false);
        PiePlot pieplot = (PiePlot)chart.getPlot();
        pieplot.setLabelFont(new Font("arial", 0, 10));
        pieplot.setNoDataMessage("None data");
        pieplot.setCircular(true);
        pieplot.setLabelGap(0.02D);
        pieplot.setBackgroundPaint(new Color(0xE1E1E1));
        pieplot.setLabelGenerator(new StandardPieSectionLabelGenerator(
                "{0} - {2}",NumberFormat.getNumberInstance(),new DecimalFormat("0.00%"))
        );

        LegendTitle legendtitle = new LegendTitle(chart.getPlot());
        BlockContainer blockcontainer = new BlockContainer(new BorderArrangement());
        LabelBlock labelblock = new LabelBlock(title, new Font("arial", 1, 12));
        labelblock.setPadding(5D, 5D, 5D, 5D);
        blockcontainer.add(labelblock, RectangleEdge.TOP);
       
        BlockContainer blockcontainer1 = legendtitle.getItemContainer();
       
        blockcontainer1.setPadding(2D, 10D, 5D, 2D);
        blockcontainer.add(blockcontainer1);
        legendtitle.setWrapper(blockcontainer);
        legendtitle.setPosition(RectangleEdge.RIGHT);
       
        legendtitle.setWrapper(blockcontainer);
        legendtitle.setPosition(RectangleEdge.RIGHT);
        legendtitle.setHorizontalAlignment(HorizontalAlignment.LEFT);
        chart.addSubtitle(legendtitle);
        if (fromDate!=null && fromDate.trim().length()>0 && endDate!=null && endDate.trim().length()>0){
            TextTitle t = new TextTitle(fromDate+"-"+endDate);
            chart.addSubtitle(0, t);
        }
        chart.setBackgroundPaint(new Color(0xE1E1E1));
        File file = new File(chartFileName);
        ChartUtilities.saveChartAsPNG(file,chart,width,height);
        return filename;
    }

分享到:
评论

相关推荐

    JfreeChart柱状图饼图

    这篇博文中,我们将深入探讨如何使用JFreeChart来创建柱状图和饼图,并理解其背后的源码机制。 ### 一、JFreeChart库介绍 JFreeChart库是开源的Java图形库,提供了一套完整的API,支持生成各种复杂图表,如折线图...

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

    JFreeChart是一个流行的Java库,用于生成各种类型的图表,包括折线图、饼图和柱状图,甚至堆栈柱状图。这个压缩包中的"CreateChartServiceImpl.java"文件很可能包含了一个实现这些功能的服务类。 首先,我们要理解...

    利用JFreeChart 实现柱状图,饼图,时序图,折线图等

    在Java编程环境中,JFreeChart库是一个非常强大的工具,它允许开发者轻松地创建各种图表,如柱状图、饼图、时序图和折线图等。这些图表在数据分析、报表展示以及各种可视化应用中非常常见。下面我们将详细介绍如何...

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

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

    jfreechart 曲线图 3d饼图 3d柱状图

    **JFreeChart库详解:创建3D曲线图、3D饼图和3D柱状图** JFreeChart是一个强大的Java图形库,它提供了多种图表类型,包括曲线图、饼图和柱状图,且支持2D和3D效果。本篇文章将深入探讨如何使用JFreeChart来创建这些...

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

    jfreechart 生成折线图、饼图、柱状图、堆栈柱状图 jfreechart 是一个功能强大且流行的 Java 图表库,用于生成各种类型的图表,包括折线图、饼图、柱状图、堆栈柱状图等。在本文中,我们将使用 jfreechart 1.0.8a ...

    jfreechart(柱状图,饼状图...)教程.zip

    下面我们将深入探讨JFreeChart的基本使用、柱状图和饼状图的创建方法,以及如何结合源码进行学习。 首先,JFreeChart库提供了丰富的图表类型,包括柱状图(BarChart)、饼状图(PieChart)、线形图(LineChart)、...

    jfreechart的使用-柱状图

    jFreeChart是Java编程语言中一个广泛使用的开源图表库,它提供了丰富的图表类型,包括柱状图、饼图、线形图等。博主通过具体的代码示例,详细解释了如何利用jFreeChart生成柱状图,这对于数据可视化和报告生成非常...

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

    标题中提到的“jfreechart生成折线图、饼图、柱状图、堆栈柱状图”是指使用Java的一个开源图形库JFreeChart来创建不同类型的统计图表。JFreeChart是一个功能全面、成熟的Java图表库,广泛应用于各种应用程序中进行...

    jfreechart曲线图饼图柱状图 免费图标 图表

    JFreeChart是一款强大的Java图表库,它为开发者提供了丰富的图形绘制功能,包括曲线图、饼图和柱状图等。这个库是免费的,适用于各种项目,无论是商业应用还是个人学习,都能从中受益。在本篇文章中,我们将深入探讨...

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

    你可以创建一个`CategoryDataset`对象,将数据组织成类别和值,然后使用`JFreeChart`的`createBarChart()`方法来生成柱状图。 饼图是另一种常用的数据表示形式,适合显示各部分占整体的比例。JFreeChart允许你创建...

    JFreeChart 饼图、柱状图 例 (含数据库)

    JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的图表,包括饼图、柱状图等,并且能够与数据库进行交互,为数据分析和可视化提供便利。在这个MyEclipse项目中,你将找到如何利用JFreeChart来实现这些...

    JFreeChart饼图、柱状图等

    JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的高质量图表,如饼图、柱状图、线形图、散点图等。这个库在IT行业中被广泛应用于数据分析、报表生成以及各种可视化应用中。在给定的压缩包文件中,...

    jfreechart柱状图

    这个压缩包提供的源代码示例,展示了如何使用 JFreeChart 创建和展示柱状图。 柱状图是一种常用的数据可视化方式,通过矩形的长度或高度来表示数据量的大小。在商业智能和统计分析中,柱状图能够清晰地比较不同类别...

    jfreechart 柱状图、曲线图、饼图经

    在JFreeChart中,可以使用`CategoryPlot`类来创建柱状图。我们需要准备数据集,通常是`DefaultCategoryDataset`对象,然后将数据集添加到`CategoryPlot`中,最后设置图表的外观和样式,如颜色、标签等。 接着,我们...

    java使用JFreeChart制作柱形图

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

    JFreeChart在jsp中显示柱状图、饼图

    在JFreeChart中,你可以创建CategoryDataset,填充数据,然后使用CategoryPlot和JFreeChart类创建柱状图。每个柱子代表类别,其高度表示该类别的值。 **饼图**则用于展示各部分占整体的比例,JFreeChart提供了...

Global site tag (gtag.js) - Google Analytics