(分析话务量结果的统计分析图,提供柱状图和曲线图,更能形象地描述随时间的分布特性。)
那位高手做过这种东西!希望赐教小弟下!怎么取数据库oracle的数据,怎么用代码实现柱状图和曲线图等等一些问题!最好是将代码写好注释。高分相送!

解决方案 »

  1.   

    package lius.chart.demo;import java.io.*;import org.jfree.data.*;
    import org.jfree.chart.*;
    import org.jfree.chart.plot.*;
    /**
     * 该类用于演示最简单的柱状图生成
     * @author Winter Lau
     */
    public class BarChartDemo { public static void main(String[] args) throws IOException{ CategoryDataset dataset = getDataSet2();
    JFreeChart chart = ChartFactory.createBarChart3D(
    "水果产量图", // 图表标题
    "水果", // 目录轴的显示标签
    "产量", // 数值轴的显示标签
    dataset, // 数据集
    PlotOrientation.VERTICAL, // 图表方向:水平、垂直
    true,  // 是否显示图例(对于简单的柱状图必须是false)
    false,  // 是否生成工具
    false  // 是否生成URL链接
    );

    FileOutputStream fos_jpg = null;
    try {
    fos_jpg = new FileOutputStream("D:\\fruit.jpg");
    ChartUtilities.writeChartAsJPEG(fos_jpg,100,chart,400,300,null);
    } finally {
    try {
    fos_jpg.close();
    } catch (Exception e) {}
    }
    }
    /**
     * 获取一个演示用的简单数据集对象
     * @return
     */
    private static CategoryDataset getDataSet() {
    DefaultCategoryDataset dataset = new DefaultCategoryDataset();
    dataset.addValue(100, null, "苹果");
    dataset.addValue(200, null, "梨子");
    dataset.addValue(300, null, "葡萄");
    dataset.addValue(400, null, "香蕉");
    dataset.addValue(500, null, "荔枝");
    return dataset;
    }
    /**
     * 获取一个演示用的组合数据集对象
     * @return
     */
    private static CategoryDataset getDataSet2() {
    DefaultCategoryDataset dataset = new DefaultCategoryDataset();
    dataset.addValue(100, "北京", "苹果");
    dataset.addValue(100, "上海", "苹果");
    dataset.addValue(100, "广州", "苹果");
    dataset.addValue(200, "北京", "梨子");
    dataset.addValue(200, "上海", "梨子");
    dataset.addValue(200, "广州", "梨子");
    dataset.addValue(300, "北京", "葡萄");
    dataset.addValue(300, "上海", "葡萄");
    dataset.addValue(300, "广州", "葡萄");
    dataset.addValue(400, "北京", "香蕉");
    dataset.addValue(400, "上海", "香蕉");
    dataset.addValue(400, "广州", "香蕉");
    dataset.addValue(500, "北京", "荔枝");
    dataset.addValue(500, "上海", "荔枝");
    dataset.addValue(500, "广州", "荔枝");
    return dataset;
    }
    }
      

  2.   


    JFreeChart主页:
            http://www.jfree.org/jfreechart/index.html
    JFreeChart下载页面:
            http://sourceforge.net/projects/jfreechart/

          
     
    下载的时候需要注意的是必须下载两个文件:JFreeChart以及Jcommon。目前最新配套版本是:JFreeChart 0.9.11 Jcommon 0.8.6 
      

  3.   

    jfreechar柱图的例子
    <%@ page contentType="text/html;charset=GBK"%>
    <%@ page import="java.awt.Color,
                    java.awt.Font,
                    org.jfree.chart.ChartFactory,
                    org.jfree.chart.JFreeChart,
                    org.jfree.chart.plot.PlotOrientation,
                    org.jfree.chart.servlet.ServletUtilities,
                    org.jfree.chart.plot.CategoryPlot,
                    org.jfree.chart.axis.CategoryAxis,
                    org.jfree.chart.axis.ValueAxis,
                    org.jfree.chart.labels.StandardCategoryItemLabelGenerator,
                    org.jfree.chart.axis.AxisLocation,
                     org.jfree.data.category.CategoryDataset,
                     org.jfree.data.general.DatasetUtilities,
                     org.jfree.chart.renderer.category.BarRenderer3D"%>
    <%
    double[][] data = new double[][] {{672, 766, 223, 540, 126},{325, 521, 210, 340, 106},{332, 256, 523, 240, 526}};
    String[] rowKeys = {"苹果","梨子","葡萄"};
    String[] columnKeys = {"北京","上海","广州","成都","深圳"};
    CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);
    JFreeChart chart = ChartFactory.createBarChart3D("水果销量图统计",
                      null,
                      null,
                      dataset,
                      PlotOrientation.VERTICAL,
                      true,false,false);
    chart.setBackgroundPaint(Color.WHITE);
    CategoryPlot plot = chart.getCategoryPlot();
    CategoryAxis domainAxis = plot.getDomainAxis();
    //domainAxis.setVerticalCategoryLabels(false);
    plot.setDomainAxis(domainAxis);
    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.gray);
    //设置每种水果代表的柱的颜色 ******************************在此根据你的省市的条件改变颜色
    renderer.setSeriesPaint(0, new Color(0, 0, 255));
    renderer.setSeriesPaint(1, new Color(0, 100, 255));
    renderer.setSeriesPaint(2, Color.GREEN);
    //设置每个地区所包含的平行柱的之间距离
    renderer.setItemMargin(0.1);
    //显示每个柱的数值,并修改该数值的字体属性
    renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
    renderer.setItemLabelsVisible(true);
    plot.setRenderer(renderer);
    //设置柱的透明度
    plot.setForegroundAlpha(0.6f);
    //设置地区、销量的显示位置
    plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);
    plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
    String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);
    String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;
    %>
    <img src="<%= graphURL %>" width=500 height=300 border=0 usemap="#<%= filename %>">
      

  4.   

    谢谢bygones2001(没辙了) 和yinchongyi。
    那位还有曲线走势图的类子啊?
    那位还有曲线走势图的类子啊?
    那位还有曲线走势图的类子啊?
    那位还有曲线走势图的类子啊?
    那位还有曲线走势图的类子啊?
    那位还有曲线走势图的类子啊?
    那位还有曲线走势图的类子啊?
      

  5.   

    想要的话发个  jfreechart的demo 给你  你看能否行的通
      

  6.   

    JFreeChart,网上的例子很多呀
      

  7.   

    JFreeChart好说
    关键是楼主连ORACLE取数据都不会,该补习的东西就多了.
    不过也不难.需要说明的是,画图代码好不好使,跟JFREECHART的版本有关,1.0版的调用路径跟0.8和0.9的都不一样. 所以用1.0附带的DEMO来改编一下是最快的方法.