您的位置:首页 > 编程语言 > Java开发

利用java生成柱状图

2008-11-17 17:27 543 查看
在本人博客中将会列出柱状图、饼图、动态曲线图、静态曲线图、折线图,所有的代码都是参照于网上,在加上一些个人的注释,希望能过对大家有所帮助。

 

所有图片都是利用JFreeChart来生成,所以我们首先需要下载JFreeChart包(建议大家使用JFreeChart-1.0.9,我在使用JFreeChart-1.0.11版本的时候,一直出现IO异常)

下载地址:http://download.csdn.net/source/337198

 

此篇为柱状图:

 

import java.awt.Font;

import java.io.FileOutputStream;

import java.io.IOException;

import org.jfree.chart.ChartFactory;

import org.jfree.chart.ChartUtilities;

import org.jfree.chart.JFreeChart;

import org.jfree.chart.axis.CategoryAxis;

import org.jfree.chart.axis.CategoryLabelPositions;

import org.jfree.chart.axis.NumberAxis;

import org.jfree.chart.plot.CategoryPlot;

import org.jfree.chart.plot.PlotOrientation;

import org.jfree.chart.title.TextTitle;

import org.jfree.data.category.DefaultCategoryDataset;

public class BarChart3DDemo {

    /**

     * 创建jpg格式的柱状图

     * 

     * @param String

     *            histogramName = 柱状图名称

     * 

     * @param String

     *            xName = 目录轴的显示标签(横轴名称)

     * 

     * @param String

     *            yName = 数值轴的显示标签(纵轴名称)

     * 

     * @param String

     *            exportPath = 输出路径+文件名称

     * 

     * @return true/false = 成功/失败

     * 

     * @author Yangw

     * 

     * @timer 2008-11-07

     */

    public static boolean BarChart3DToJpg(String histogramName, String xName,

            String yName, String exportPath) {

        /** 柱状图的标签总类及数量 */

        DefaultCategoryDataset dataset = new DefaultCategoryDataset();

        dataset.addValue(47000, "", "葡萄");

        dataset.addValue(38000, "", "柚子");

        dataset.addValue(31000, "", "苹果");

        dataset.addValue(25000, "", "梨子");

        JFreeChart chart = ChartFactory.createBarChart3D(histogramName, xName,

                yName, dataset, PlotOrientation.VERTICAL, false, false, false);// PlotOrientation.VERTICAL设置图标方向

        /** 设置标题 */

        chart.setTitle(new TextTitle(histogramName, new Font("黑体", Font.ITALIC,

                22)));

        /** 设置图表部分 */

        CategoryPlot plot = (CategoryPlot) chart.getPlot();

        /** 取得横轴 */

        CategoryAxis categoryAxis = plot.getDomainAxis();

        /** 设置横轴显示标签的字体 */

        categoryAxis.setLabelFont(new Font("宋体", Font.BOLD, 22));

        /** 分类标签平行显示 */

        categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.STANDARD);

        /** 分类标签字体 */

        categoryAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 18));

        /** 取得纵轴 */

        NumberAxis numberAxis = (NumberAxis) plot.getRangeAxis();

        /** 设置纵轴显示标签字体 */

        numberAxis.setLabelFont(new Font("宋体", Font.BOLD, 42));

        FileOutputStream fos = null;

        try {

            fos = new FileOutputStream(exportPath);

            /** 生成png格式图片 */

            ChartUtilities.writeChartAsPNG(fos, chart, 800, 600);

<
94a7
li class="alt">            /** 生成jpeg格式图片 */

//          ChartUtilities.writeChartAsJPEG(fos, 1, chart, 800, 600, null);

            fos.close();

            return true;

        } catch (IOException e) {

            e.printStackTrace();

        }

        return false;

    }

    /** 测试 */

    public static void main(String[] args) throws IOException {

        System.out.println(BarChart3DDemo.BarChart3DToJpg("水果销量统计图", "水果",

                "销量", "D://f.png"));

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息