java swing jfreechart

 /**
     * 创建JFreeChart传入数据集
     */
    private void createPieChart(List<Object[]> listChartIn, List<Object[]> listChartOut)
    {
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();


        for (Object[] str : listChartIn)
        {
            dataset.addValue((Number) str[1], "1", EbsiCode.get("IAE001", Utility.isNull(str[0]) ? "" : (String) str[0])); // 输入数据
        }
        for (Object[] str : listChartOut)
        {
            dataset.addValue((Number) str[1], "2", EbsiCode.get("IAE001", Utility.isNull(str[0]) ? "" : (String) str[0])); // 输入数据
        }


        JFreeChart chart = ChartFactory.createBarChart("", "", "", dataset, PlotOrientation.VERTICAL, false, false, false); //创建一个JFreeChart
        ChartPanel panel = EbsiChartUtil.createBarChart(dataset); // 调用公共样式和处理乱码的方法
        // 将产生的图片显示在Jpanel上
        panelPiechart.setLayout(new java.awt.BorderLayout()); 
        panelPiechart.add(panel, BorderLayout.CENTER);

    }



 public static final Color BACKGROUND_PAINT = new Color(236, 233, 216); // 背景色


    private EbsiChartUtil()
    {
    }


    /**
     * 创建一个3D的饼状图
     *
     * @param dataset 数据集
     *
     * @return jfreechart图表
     */
    public static ChartPanel createPieChart3D(DefaultPieDataset dataset)
    {
        StandardChartTheme standardChartTheme = new StandardChartTheme("CN"); // 创建主题样式
        standardChartTheme.setRegularFont(new Font("宋书", Font.PLAIN, 15)); // 设置字体
        ChartFactory.setChartTheme(standardChartTheme); // 应用主题样式


        JFreeChart chart = ChartFactory.createPieChart3D("", dataset, false, true, false);


        chart.setBackgroundPaint(BACKGROUND_PAINT);// 设置背景色
        PiePlot pieplot = (PiePlot) chart.getPlot();
        pieplot.setOutlinePaint(new Color(236, 233, 216)); // 设置边框颜色
        pieplot.setBackgroundAlpha(0f); // 设置透明度
        pieplot.setNoDataMessage("当前没有有效的数据");


        DecimalFormat df = new DecimalFormat("0.00%"); // 设置小数格式
        NumberFormat nf = NumberFormat.getNumberInstance(); // 获得一个NumberFormat对象
        StandardPieSectionLabelGenerator sp1 = new StandardPieSectionLabelGenerator("{0}  {2}", nf, df); // 获得StandardPieSectionLabelGenerator对象
        pieplot.setLabelGenerator(sp1); // 设置饼图显示百分比


        return new ChartPanel(chart);
    }


    public static ChartPanel createBarChart(DefaultCategoryDataset dataset)
    {
        StandardChartTheme standardChartTheme = new StandardChartTheme("CN"); // 创建主题样式
        standardChartTheme.setExtraLargeFont(new Font("隶书", Font.BOLD, 10)); // 设置标题字体
        standardChartTheme.setRegularFont(new Font("微软雅黑", Font.PLAIN, 12)); // 设置图例的底部字体
        standardChartTheme.setLargeFont(new Font("宋书", Font.PLAIN, 10)); // 设置轴向的字体
        ChartFactory.setChartTheme(standardChartTheme);


        JFreeChart chart = ChartFactory.createBarChart("", "", "", dataset, PlotOrientation.VERTICAL, false, false, false); // 创建一个JFreeChart


        CategoryPlot pieplot = chart.getCategoryPlot();// 获取条形的对象
        pieplot.setBackgroundAlpha(0);// 设置图形的背景颜色
        pieplot.setNoDataMessage("当前没有有效的数据");
        chart.setBackgroundPaint(new Color(236, 233, 216));


        //设置条形柱上显示数量
        BarRenderer3D renderer = new BarRenderer3D();
        renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
        renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition( // 设置柱子上显示的数字在上方显示
                ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));
        renderer.setItemLabelAnchorOffset(10D);// 设置柱形图上的文字偏离值
        renderer.setBaseItemLabelsVisible(true);
        renderer.setMaximumBarWidth(0.05);// 设置柱子宽度 
        renderer.setBaseOutlinePaint(Color.BLACK); // 设置柱子边框颜色
        pieplot.setRenderer(renderer);
        pieplot.setOutlinePaint(new Color(236, 233, 216)); // 设置图片边框颜色


        // X 轴      
        CategoryAxis domainAxis = pieplot.getDomainAxis();
        domainAxis.setTickLabelPaint(Color.BLUE); // 字体颜色      
        domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); // 横轴上的label斜显示
        return new ChartPanel(chart);
    }
    
    /**
     * 柱子数大于10根 设置chartpanel大小   add by hello
     * @param dataset
     * @return 
     */
    public static ChartPanel createBarChartMore(DefaultCategoryDataset dataset)
    {
        StandardChartTheme standardChartTheme = new StandardChartTheme("CN"); // 创建主题样式
        standardChartTheme.setExtraLargeFont(new Font("隶书", Font.BOLD, 10)); // 设置标题字体
        standardChartTheme.setRegularFont(new Font("微软雅黑", Font.PLAIN, 12)); // 设置图例的底部字体
        standardChartTheme.setLargeFont(new Font("宋书", Font.PLAIN, 10)); // 设置轴向的字体
        ChartFactory.setChartTheme(standardChartTheme);


        JFreeChart chart = ChartFactory.createBarChart("", "", "", dataset, PlotOrientation.VERTICAL, true, false, false); // 创建一个JFreeChart


        CategoryPlot pieplot = chart.getCategoryPlot();// 获取条形的对象
        pieplot.setBackgroundAlpha(0);// 设置图形的背景颜色
        pieplot.setNoDataMessage("当前没有有效的数据");
        chart.setBackgroundPaint(new Color(236, 233, 216));


        //设置条形柱上显示数量
        BarRenderer3D renderer = new BarRenderer3D();
        renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
        renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition( // 设置柱子上显示的数字在上方显示
                ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));
        renderer.setItemLabelAnchorOffset(10D);// 设置柱形图上的文字偏离值
        renderer.setBaseItemLabelsVisible(true);
        renderer.setMaximumBarWidth(0.1);// 设置柱子宽度 
        renderer.setBaseOutlinePaint(Color.BLACK); // 设置柱子边框颜色
        pieplot.setRenderer(renderer);
        pieplot.setOutlinePaint(new Color(236, 233, 216)); // 设置图片边框颜色


        // X 轴      
        CategoryAxis domainAxis = pieplot.getDomainAxis();
        domainAxis.setTickLabelPaint(Color.BLUE); // 字体颜色      
        domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); // 横轴上的label斜显示
        return new ChartPanel(chart, dataset.getColumnCount()*75, 300, dataset.getColumnCount()*75, 300, dataset.getColumnCount()*75, 300, true, true, true, true, true, true);
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值