我的漫漫程序之旅

专注于JavaWeb开发
随笔 - 39, 文章 - 310, 评论 - 411, 引用 - 0
数据加载中……

JFreeChart 统计分析柱状图详解


在这里要注意,如果柱子上的数字位数过大,而图的宽度又不够,数字就不会显示了。
要注意调整~


参考代码:
List<UserCount> list = manager.getTotalStatus(region.getId(), 0);
        
double[][] data = new double[2][7];
        String[] rowKeys 
=
        
"能瀪母猪""奶牛" };
        String[] columnKeys 
=
        
"承保员""录入员""查勘员""理算员""核赔员""审核员""管理员" };
        
// 填充数据源
        for (int i = 0; i < list.size(); i++)
        
{
            UserCount uc 
= list.get(i);
            
// id为0为统计记录
            if (uc.getRegionId() == 0)
            
{
                data[
0][0= uc.getPigUnderWriter();
                data[
0][1= uc.getPigRecorder();
                data[
0][2= uc.getPigSurveyor();
                data[
0][3= uc.getPigClaimer();
                data[
0][4= uc.getPigVerifier();
                data[
0][5= uc.getPigAssessor();
                data[
0][6= uc.getPigAdmin();

                data[
1][0= uc.getOxUnderWriter();
                data[
1][1= uc.getOxRecorder();
                data[
1][2= uc.getOxSurveyor();
                data[
1][3= uc.getOxClaimer();
                data[
1][4= uc.getOxVerifier();
                data[
1][5= uc.getOxAssessor();
                data[
1][6= uc.getOxAdmin();
                
break;

            }

        }


        CategoryDataset dataset 
= DatasetUtilities.createCategoryDataset(
                rowKeys, columnKeys, data);
        JFreeChart chart 
= ChartFactory.createBarChart3D("人员总体状况图表""",
                
"数量(人)", dataset, PlotOrientation.VERTICAL, truefalsefalse);
        
// 背景色
        chart.setBackgroundPaint(Color.WHITE);
        
// 设置标题内容及样式
        chart
                .setTitle(
new TextTitle("人员总体状况图表"new Font("黑体", Font.BOLD,
                        
14)));

        CategoryPlot plot 
= chart.getCategoryPlot();
        plot.setBackgroundPaint(Color.LIGHT_GRAY);
        plot.setRangeGridlinePaint(Color.black);

        ValueAxis rangeAxis 
= plot.getRangeAxis();
        
// 设置最高的一个 Item 与图片顶端的距离
        rangeAxis.setUpperMargin(0.15);
        
// 设置最低的一个 Item 与图片底端的距离
        rangeAxis.setLowerMargin(0.15);
        plot.setRangeAxis(rangeAxis);

        BarRenderer3D renderer 
= new BarRenderer3D();
        renderer.setBaseOutlinePaint(Color.BLACK);
        
// 设置 Wall 的颜色
        renderer.setWallPaint(Color.LIGHT_GRAY);
        
// 设置每种角色代表的柱的颜色
        
// 对于自定义颜色也可以用 Color.decode("#124f21");
        renderer.setSeriesPaint(0new Color(2551020));
        renderer.setSeriesPaint(
1, Color.YELLOW);
        
// 设置每种角色代表的柱的 Outline 颜色
        renderer.setSeriesOutlinePaint(0, Color.BLACK);
        renderer.setSeriesOutlinePaint(
1, Color.BLACK);
        
// 设置每个地区所包含的平行柱的之间距离
        renderer.setItemMargin(0.1);
        
// 设置是否显示数字(柱子上)
        renderer
                .setBaseItemLabelGenerator(
new StandardCategoryItemLabelGenerator());
        
// 柱子上字体的样式
        renderer.setBaseItemLabelFont(new Font("黑体", Font.PLAIN, 9));
        renderer.setBaseItemLabelsVisible(
true);
        plot.setRenderer(renderer);

        
// 设置柱的透明度
        plot.setForegroundAlpha(0.9f);
        
// 设置地区、数量的显示位置
        plot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
        plot.setRangeAxisLocation(AxisLocation.TOP_OR_LEFT);

        Random r 
= new Random();
        
this.imagePath = "/images/chart/userCountBarChart" + r.nextInt()
                
+ ".png";
        String path 
= this.getFullPath() + imagePath;
        ChartUtilities.saveChartAsPNG(
new File(path), chart, 700300);


posted on 2008-12-02 17:09 々上善若水々 阅读(1754) 评论(0)  编辑  收藏 所属分类: opensource


只有注册用户登录后才能发表评论。


网站导航: