Cewolf使用中的注意点

阅读更多

Cewolf生成图片和说明时,有两种方式,一种是以一幅图显示:

   
       
       
   

   
       
   



另外一种是分开显示

   
       
       
   

   
       
   


 


其他说明:
//设置Legend的位置
        //((JFreeChart) chart).getLegend().setPosition(RectangleEdge.RIGHT);
//设置最高的一个 Item 与图片顶端的距离
        plot.getRangeAxis().setUpperMargin(0.15);
        //设置最低的一个 Item 与图片底端的距离
        plot.getRangeAxis().setLowerMargin(0.15);
        //坐标轴字体
        plot.getDomainAxis().setLabelFont(new Font("宋体", Font.PLAIN, 12));
        //横轴每个分类的字体
        plot.getDomainAxis().setTickLabelFont(new Font("宋体", Font.BOLD, 12));
        if(labelPositionsUP_45)
            plot.getDomainAxis().setCategoryLabelPositions(CategoryLabelPositions.UP_45);

//柱图列宽度((BarRenderer) plot.getRenderer()).setMaximumBarWidth(barWidth);

因为cewolf的tag中不能使用el,所以设置一个零时变量。

创建bean对象,用来修饰显示的图形。现在只支持pie和verticalBar3D的,分别是PieChartPostProcessor、CategoryChartPostProcessor。

通过cewolf tag显示图形
部系" yaxislabel="金额" legendanchor="west">
id:必须,在整个页面中唯一
type:显示图形的类型,现在一般使用pie、verticalBar3D
xaxislabel,yaxislabel:X、Y轴的标题,不是必须
legendanchor:小图标(分类)显示的位置
还有一个showlegend属性,默认为 true,设置为false时,不显示小图标(分类)
指定数据来源,这里指向变量dp。
使用processor,控制图形的显示效果。这里可以设置一些颜色之类的属性。
显示图形,chartid指先前指定的id,renderer一般相同,指的是生成图片路径。Width、height就是图片高度和宽度。

在饼图中JFreeChart默认只显示选项和数值,没有显示各项所占比例。由于手头没有1.0版的JFreeChart Developer Guide(这可是要钱的,后来想想即使有,也未必能找到关于百分比这方面的说明),再加上DEMO中的饼图都没有显示百分比,无法参考。后来在网上找到了一个老版本的例子,其中能显示百分比。它是通过在PiePlot中设置的:

PiePlot pie;
pie.setPercentFormatString("#,###0.0#%");

但1.0版本中根本就找不到setPercentFormatString这方法,JFreeChart各版本之间改动比较大,很难兼容。还好它是开源的,把它的源码都搜索了一遍,认真读了一些源码,终于理出了头绪。

原来在1.0.0-rc1版中显示百分比已经调整到StandardPieItemLabelGenerator构造函数中了,StandardPieItemLabelGenerator有三个构造函数。StandardPieItemLabelGenerator()不显示各项所占比例。另外两个可以显示比例。代码如下:


plot.setLabelGenerator(new StandardPieItemLabelGenerator(StandardPieItemLabelGenerator.DEFAULT_TOOLTIP_FORMAT));
//或者采用下面自定义样式显示,{0}表示选项,{1}表示数值,{2}表示所占比例
plot.setLegendLabelGenerator(new StandardPieItemLabelGenerator("{0}: ({1}M, {2})"));

默认显示百分比是取整的,如果要让百分比保留二位小数,可以用第三个构造函数:
plot.setLabelGenerator(new StandardPieItemLabelGenerator(“{0}={1}({2})”,
                    NumberFormat.getNumberInstance(),
                    new DecimalFormat("0.00%"))); 

你可能感兴趣的:(jfreechart,Bean,UP)