`
talentkep
  • 浏览: 100208 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

cewolf 图表 生成 1

阅读更多

在使用cewolf 之前,首先来熟悉一下jFreeChart 。这里分三部分来介绍 jFreeChart 。第一部分介绍jFreeChart产生
图形的流程及相关的重要的类;第二部分介绍四种常用的报表图(饼图、柱状图、折线图、时间序列图);第三部分
介绍在图形中增加Item Lable 。 
jFreeChart 的版本是jfreechart-1.0.0-pre2(1)
cewolf 的最新版本是cewolf-0.12.0

一、jFreeChart产生图形的流程
  1. 创建一个数据源(dataset)来包含将要在图形中显示的数据?
  2. 创建一个 JFreeChart 对象来代表要显示的图形
  3. 把图形输出
   重要的类和接口:
   org.jfree.data.general.Dataset  所有数据源类都要实现的接口
   org.jfree.chart.ChartFactory    由它来产生 JFreeChart 对象
   org.jfree.chart.JFreeChart    所有对图形的调整都是通过它噢!!
   org.jfree.chart.plot.Plot    通过JFreeChart 对象获得它,然后再通过它对图形外部部分(例:坐标轴)调整
                                注意:它有很多子类,一般都下嗍造型到它的子类!
   org.jfree.chart.renderer.AbstractRenderer     通过JFreeChart 对象获得它,然后再通过它对图形内部部分
                                                (例:折线的类型)调整。同样,针对不同类型的报表图,它有
                                                着不同的子类实现!在下面我们简称它为 Renderer
   下面我们结合不同类型的图形来具体分析这个流程。
   
二、饼图
   饼图的dataset 一般是用PieDataset 接口,具体实现类是 DefaultPieDataset
   1、创建一个数据源(dataset):
    

 

   
  2、由ChartFactory  产生 JFreeChart 对象

 

 private static JFreeChart createChart(PieDataset piedataset)
    
{
        JFreeChart jfreechart 
= ChartFactory.createPieChart("Pie Chart Demo 1",  //图形标题名称
                                                              piedataset,   // dataset
                                                              true,      // legend?
                                                              true,     // tooltips?
                                                              false);  //URLs?
        PiePlot pieplot = (PiePlot)jfreechart.getPlot();  //通过JFreeChart 对象获得 plot:PiePlot!!
        pieplot.setNoDataMessage("No data available");    // 没有数据的时候显示的内容
        return jfreechart;
    }
 

   
    一些重要的方法:
    pieplot.setExplodePercent(0,0.3D) //把Lable 为"One" 的那一块”挖“出来30%    
   3、输出略  
   
三、柱状图
   柱状图的dataset 一般是用CatagoryDataset接口(具体实现类是DefaultCategoryDataset),也会用 IntervalXYDataset 
   接口
   1、创建一个数据源(dataset):

 

 private static CategoryDataset createDataset()
    
{
        String series1 
= "First";
        String series2 
= "Second";
        String series3 
= "Third";
        String category1 
= "Category 1";
        String category2 
= "Category 2";
        String category3 
= "Category 3";
        String category4 
= "Category 4";
        String category5 
= "Category 5";
        DefaultCategoryDataset defaultcategorydataset 
= new DefaultCategoryDataset();
        defaultcategorydataset.addValue(
1.0D, series1, category1);
        defaultcategorydataset.addValue(4D, series1, category2);
        defaultcategorydataset.addValue(3D, series1, category3);
        defaultcategorydataset.addValue(5D, series1, category4);
        defaultcategorydataset.addValue(5D, series1, category5);
        
        defaultcategorydataset.addValue(5D, series2, category1);
        defaultcategorydataset.addValue(7D, series2, category2);
        defaultcategorydataset.addValue(6D, series2, category3);
        defaultcategorydataset.addValue(8D, series2, category4);
        defaultcategorydataset.addValue(4D, series2, category5);
        
        defaultcategorydataset.addValue(4D, series3, category1);
        defaultcategorydataset.addValue(3D, series3, category2);
        defaultcategorydataset.addValue(2D, series3, category3);
        defaultcategorydataset.addValue(3D, series3, category4);
        defaultcategorydataset.addValue(6D, series3, category5);
        
return defaultcategorydataset;
    }


      2、由ChartFactory  产生 JFreeChart 对象    
  

 

  private static JFreeChart createChart(CategoryDataset categorydataset)
    
{
        JFreeChart jfreechart 
= ChartFactory.createBarChart("Bar Chart Demo"//图形标题名称
                                                            "Category",//domain 轴 Lable 
                                                                         这里先简单理解为横坐标Lable好了
                                                            
"Value"//range 轴 Lable
                                                                       这里也先简单理解为纵坐标Lable好了
                                                            categorydataset, 
//  dataset
                                                            PlotOrientation.VERTICAL, //垂直显示
                                                            true// legend?
                                                            true,  // tooltips?
                                                            false); //URLs?
        jfreechart.setBackgroundPaint(Color.white);   //设定背景色为白色
        CategoryPlot categoryplot = jfreechart.getCategoryPlot(); //获得 plot:CategoryPlot!!
        categoryplot.setBackgroundPaint(Color.lightGray); //设定图表数据显示部分背景色
        categoryplot.setDomainGridlinePaint(Color.white); //横坐标网格线白色
        categoryplot.setDomainGridlinesVisible(true); //可见
        categoryplot.setRangeGridlinePaint(Color.white); //纵坐标网格线白色
        
//下面两行使纵坐标的最小单位格为整数
        NumberAxis numberaxis = (NumberAxis)categoryplot.getRangeAxis();
        numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
        BarRenderer barrenderer 
= (BarRenderer)categoryplot.getRenderer(); //获得renderer 注意这里是下嗍造型
                                                                             到BarRenderer!!
        barrenderer.setDrawBarOutline(
false); // Bar的外轮廓线不画
        GradientPaint gradientpaint = new GradientPaint(0.0F0.0F, Color.blue, 
        
0.0F0.0Fnew Color(0064));   //设定特定颜色
        GradientPaint gradientpaint1 = new GradientPaint(0.0F0.0F, Color.green, 
        
0.0F0.0Fnew Color(0640));
        GradientPaint gradientpaint2 
= new GradientPaint(0.0F0.0F, Color.red,
        
0.0F0.0Fnew Color(6400));
        barrenderer.setSeriesPaint(
0, gradientpaint); //给series1 Bar设定上面定义的颜色
        barrenderer.setSeriesPaint(1, gradientpaint1); //给series2 Bar 设定上面定义的颜色
        barrenderer.setSeriesPaint(2, gradientpaint2); //给series3 Bar 设定上面定义的颜色
        CategoryAxis categoryaxis = categoryplot.getDomainAxis();  //横轴上的 Lable 45度倾斜
        categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);        
        
return jfreechart;
    }
  

    一些重要的方法:(增加一块标记)
        IntervalMarker intervalmarker = new IntervalMarker(4.5D, 7.5D);
        intervalmarker.setLabel("Target Range");
        intervalmarker.setLabelFont(new Font("SansSerif", 2, 11));
        intervalmarker.setLabelAnchor(RectangleAnchor.LEFT);
        intervalmarker.setLabelTextAnchor(TextAnchor.CENTER_LEFT);
        intervalmarker.setPaint(new Color(222, 222, 255, 128));
        categoryplot.addRangeMarker(intervalmarker, Layer.BACKGROUND);    
        
四、折线图
   折线图的dataset 两种CatagoryDataset接口(具体实现类是DefaultCategoryDataset),XYDataset 接口 
   1、CatagoryDataset接口:         
   A、创建一个数据源(dataset): 
    

 

private static CategoryDataset createDataset()
    
{
        String series1 
= "First";
        String series2 
= "Second";
        String series3 
= "Third";
        String type1 
= "Type 1";
        String type2 
= "Type 2";
        String type3 
= "Type 3";
        String type4 
= "Type 4";
        String type5 
= "Type 5";
        String type6 
= "Type 6";
        String type7 
= "Type 7";
        String type8 
= "Type 8";
        DefaultCategoryDataset defaultcategorydataset 
= new DefaultCategoryDataset();
        defaultcategorydataset.addValue(
1.0D, series1, type1);
        defaultcategorydataset.addValue(4D, series1, type2);
        defaultcategorydataset.addValue(3D, series1, type3);
        defaultcategorydataset.addValue(5D, series1, type4);
        defaultcategorydataset.addValue(5D, series1, type5);
        defaultcategorydataset.addValue(7D, series1, type6);
        defaultcategorydataset.addValue(7D, series1, type7);
        defaultcategorydataset.addValue(8D, series1, type8);
        
        defaultcategorydataset.addValue(5D, series2, type1);
        defaultcategorydataset.addValue(7D, series2, type2);
        defaultcategorydataset.addValue(6D, series2, type3);
        defaultcategorydataset.addValue(8D, series2, type4);
        defaultcategorydataset.addValue(4D, series2, type5);
        defaultcategorydataset.addValue(4D, series2, type6);
        defaultcategorydataset.addValue(2D, series2, type7);
        defaultcategorydataset.addValue(
1.0D, series2, type8);
        
        defaultcategorydataset.addValue(4D, series3, type1);
        defaultcategorydataset.addValue(3D, series3, type2);
        defaultcategorydataset.addValue(2D, series3, type3);
        defaultcategorydataset.addValue(3D, series3, type4);
        defaultcategorydataset.addValue(6D, series3, type5);
        defaultcategorydataset.addValue(3D, series3, type6);
        defaultcategorydataset.addValue(4D, series3, type7);
        defaultcategorydataset.addValue(3D, series3, type8);
        
return defaultcategorydataset;
    }
 

   B、由ChartFactory  产生 JFreeChart 对象     (与上面重复的部分就不再注释)
    

 

private static JFreeChart createChart(CategoryDataset categorydataset)
    
{
        JFreeChart jfreechart 
= ChartFactory.createLineChart("Line Chart Demo 1"
                                                             
"Type"
                                                             
"Value"
                                                             categorydataset, 
                                                             PlotOrientation.VERTICAL, 
                                                             
true
                                                             
true
                                                             
false);
        jfreechart.setBackgroundPaint(Color.white);
        CategoryPlot categoryplot 
= (CategoryPlot)jfreechart.getPlot();
        categoryplot.setBackgroundPaint(Color.lightGray);
        categoryplot.setRangeGridlinePaint(Color.white);
        NumberAxis numberaxis 
= (NumberAxis)categoryplot.getRangeAxis();
        numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
        numberaxis.setAutoRangeIncludesZero(
true);
        
//获得renderer 注意这里是下嗍造型到lineandshaperenderer!!
        LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer)categoryplot.getRenderer();
        lineandshaperenderer.setShapesVisible(
true); //series 点(即数据点)可见
        lineandshaperenderer.setSeriesStroke(0new BasicStroke(2.0F111.0Fnew float[] {
            10F, 6F
        }
0.0F)); //定义series为"First"的(即series1)点之间的连线 ,这里是虚线,默认是直线
        lineandshaperenderer.setSeriesStroke(1new BasicStroke(2.0F111.0Fnew float[] {
            6F, 6F
        }
0.0F)); //定义series为"Second"的(即series2)点之间的连线
        lineandshaperenderer.setSeriesStroke(2new BasicStroke(2.0F111.0Fnew float[] {
            
2.0F, 6F
        }
0.0F)); //定义series为"Third"的(即series3)点之间的连线
        return jfreechart;
    }
 
        

一些重要的方法:
       
 lineandshaperenderer.setLineVisible(true)  //series 点(即数据点)间有连线可见
   2、XYDataset 接口:
   A、创建一个数据源(dataset):
    

 

private static XYDataset createDataset()
    
{
        XYSeries xyseries 
= new XYSeries("First"); //先产生XYSeries 对象
        xyseries.add(1.0D1.0D);
        xyseries.add(2D, 4D);
        xyseries.add(3D, 3D);
        xyseries.add(4D, 5D);
        xyseries.add(5D, 5D);
        xyseries.add(6D, 7D);
        xyseries.add(7D, 7D);
        xyseries.add(8D, 8D);
        
        XYSeries xyseries1 
= new XYSeries("Second");
        xyseries1.add(
1.0D, 5D);
        xyseries1.add(2D, 7D);
        xyseries1.add(3D, 6D);
        xyseries1.add(4D, 8D);
        xyseries1.add(5D, 4D);
        xyseries1.add(6D, 4D);
        xyseries1.add(7D, 2D);
        xyseries1.add(8D, 
1.0D);
        
        XYSeries xyseries2 
= new XYSeries("Third");
        xyseries2.add(3D, 4D);
        xyseries2.add(4D, 3D);
        xyseries2.add(5D, 2D);
        xyseries2.add(6D, 3D);
        xyseries2.add(7D, 6D);
        xyseries2.add(8D, 3D);
        xyseries2.add(9D, 4D);
        xyseries2.add(10D, 3D);
        
        XYSeriesCollection xyseriescollection 
= new XYSeriesCollection(); //再用XYSeriesCollection添加入XYSeries 对象
        xyseriescollection.addSeries(xyseries);
        xyseriescollection.addSeries(xyseries1);
        xyseriescollection.addSeries(xyseries2);
        
return xyseriescollection;
    }

 

private static PieDataset createDataset()
    
{
        DefaultPieDataset defaultpiedataset 
= new DefaultPieDataset(); //注意是DefaultPieDataset!!
        defaultpiedataset.setValue("One"new Double(43.200000000000003D));
        defaultpiedataset.setValue(
"Two"new Double(10D));
        defaultpiedataset.setValue(
"Three"new Double(27.5D));
        defaultpiedataset.setValue(
"Four"new Double(17.5D));
        
return defaultpiedataset;
    }
 
分享到:
评论

相关推荐

    Cewolf web报表实例

    - **性能监控**:定期检查图表生成和加载性能,优化代码以提升用户体验。 - **响应式设计**:确保图表在不同设备和屏幕尺寸下都能正确显示。 通过阅读《Cewolf开发全攻略》文档,开发者将全面掌握Cewolf的使用...

    cewolf

    CEWolf适用于需要生成统计图表的项目,如数据分析应用、商业智能工具、报表系统或者Web监控面板。它可以方便地集成到Java桌面应用、Swing或JavaFX应用,甚至Web应用中,如Spring MVC或JSF项目。 **CEWolf-1.0版本**...

    jfreechart+cewolf的架包

    1. **使用JFreeChart生成图表**:根据业务需求,利用JFreeChart API创建所需的图表对象。 2. **配置Cewolf**:在Web应用的部署描述符(如web.xml)中添加Cewolf Servlet的配置信息。 3. **发送请求**:当用户请求...

    cewolf-1.1.4

    1. **性能提升**:可能对内部算法进行了优化,提高了图表生成速度,降低了资源消耗。 2. **新功能**:可能添加了新的图表类型或者图表组件,以满足更多样化的展示需求。 3. **兼容性增强**:可能增强了与不同浏览器...

    精通Java+Web动态图表编程

    《精通Java+Web动态图表编程》是一本全面且深入的教程,它不仅涵盖了Java图形处理的基础知识,还提供了大量的实战案例,特别是对JFreeChart和Cewolf动态图表生成引擎的应用,以及如何将复杂的图表生成过程封装成可...

    cewolf开发需要的jar文件

    在Java Web开发中,有时候需要在服务器端生成图形,例如图表、报表等,cewolf可能就是这样一个工具,提供便捷的方式去实现这样的功能。 在开发过程中,确保正确引入了所有必要的jar文件至关重要。这些文件可能包含...

    Web报表开发技术-Cewolf开发技术实例

    Cewolf,全称为“Charts on the Web in Every Language”,是一个开源项目,主要目的是简化在Web应用中生成动态图表的过程。它支持多种图表类型,如柱状图、饼图、线图等,并且可以与各种数据源(如数据库、CSV文件...

    精通Java Web动态图表编程

    本书不仅详述了如何利用Java对图形的处理能力,通过Java Applet、Java Servlet、JSP、JavaBean以及借助开源软件JFreeChart及Cewolf动态图表生成引擎等多种方式开发Web动态图表,还详解了如何设计Web动态图表生成引擎...

    flex实战报表:jFreeChart,cewolf,iText.doc

    在实际项目中,可以根据需求灵活选择和组合,例如,使用jFreeChart在服务器端生成复杂图表,再通过cewolf在Flex客户端展示,或者利用iText生成包含图表的PDF报告供用户下载。这样,不仅可以满足数据展示的需求,还能...

    通Java Web动态图表编程

    \r\n 本书不仅详述了如何利用Java对图形的处理能力,通过Java Applet、Java Servlet、JSP、JavaBean以及借助开源软件JFreeChart及Cewolf动态图表生成引擎等多种方式开发Web动态图表,还详解了如何设计Web动态图表...

    开放源代码作品与Web图表编程

    JFreeChart和Cewolf是两个关键的开放源代码Web图表生成引擎,广泛应用于Java Web开发中。JFreeChart作为一个强大的图表库,支持多种类型的图表,如饼图、柱状图、线图等,可用于数据分析和可视化展示。Cewolf则在其...

    精通Java Web动态图表编程5

    继续发: 本书向读者展示如何使用Java Applet、Java Servlet、Java Server Pages(JSP)、JavaBean以及开放源代码的Web图表生成引擎——JFreeChart和Cewolf来开发奇妙的Web动态图表应用程序——以一种跨平台、小巧...

    精通Java Web动态图表编程4

    向读者展示如何使用Java Applet、Java Servlet、Java Server Pages(JSP)、JavaBean以及开放源代码的Web图表生成引擎——JFreeChart和Cewolf来开发奇妙的Web动态图表应用程序——以一种跨平台、小巧、结构清晰的...

    java 报表生成 工具介绍

    5. **jCharts**:jCharts是一个纯Java的图表生成工具,可输出多种类型的图表,并且特别适合通过Servlets在Web应用中展示图表。 6. **Cewolf**:Cewolf是一个用于在Web应用中嵌入复杂图形图表的Servlet/JSP组件。它...

    JSP创建基于WEB的动态图表之开源代码篇源代码.rar_jsp_jsp动态_动态WEB_基于Web

    总的来说,这个项目提供了JSP创建基于Web的动态图表的实践案例,涵盖了JFreeChart和Cewolf这两个开源库的使用,以及如何在JSP中实现动态图表的生成和交互。通过学习和研究这些源代码,开发者可以掌握在Web应用中生成...

    精通Java Web动态图表编程7_1

    本书向读者展示如何使用Java Applet、Java Servlet、Java Server Pages(JSP)、JavaBean以及开放源代码的Web图表生成引擎——JFreeChart和Cewolf来开发奇妙的Web动态图表应用程序——以一种跨平台、小巧、结构清晰...

    精通Java Web动态图表编程6

    本书向读者展示如何使用Java Applet、Java Servlet、Java Server Pages(JSP)、JavaBean以及开放源代码的Web图表生成引擎——JFreeChart和Cewolf来开发奇妙的Web动态图表应用程序——以一种跨平台、小巧、结构清晰...

    精通Java Web动态图表编程3

    《精通Java Web动态图表编程》向读者展示如何使用Java Applet、Java Servlet、Java Server Pages(JSP)、JavaBean以及开放源代码的Web图表生成引擎——JFreeChart和Cewolf来开发奇妙的Web动态图表应用程序——以一...

Global site tag (gtag.js) - Google Analytics