这个图怎么画出来,上面的都好画,就是下面的X轴要用表显示怎么弄,弄过的大侠给指点一下

解决方案 »

  1.   


    public ActionForward show(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {
    int width = 500;     // 图像宽度
    int height = 375;      // 图像高度
    String chartTitle = "编程类图书年销量柱形图分析";     // 图表标题
    String subtitle = "------统计时间:2008年";     // 副标题
    String xTitle = "销售时间:2008年";     // X轴标题
    String yTitle = "销售量    单位:万册";     // Y轴标题 String[] cutline = new String[] { "ASP", "JSP", "PHP" };     // 图例名称
    String category[] = new String[] {"第1季度","第2季度","第3季度","第4季度"};   // 统计种类
    Double[][] data = new Double[cutline.length][category.length];
    for (int m = 0; m < cutline.length; m++) {     // 随机获取绘图数据
        for (int n = 0; n < category.length; n++) {
        data[m][n] = Double.valueOf((1 + Math.random() * 100));
        }
    }
    DefaultCategoryDataset dataset = new DefaultCategoryDataset();
    for (int m = 0; m < cutline.length; m++) {
        for (int n = 0; n < category.length; n++) {
        dataset.addValue(data[m][n], cutline[m], category[n]);
        }
    }

    JFreeChart chart = ChartFactory.createBarChart3D(chartTitle,     // 图表标题
           xTitle,     // X轴标题
           yTitle,     // Y轴标题
           dataset,     // 绘图数据集
           PlotOrientation.VERTICAL,     // 柱形图绘制方向
           true,     // 显示图例
           true,     // 显示图例名称
           false     // 生成链接
           );
    //为图片添加副标题,代码如下:
    chart.addSubtitle(new TextTitle(subtitle));
    //将图片的背景色设置为渐变效果,代码如下:
    GradientPaint chartGP = new GradientPaint(0, 0,
           new Color(219, 227, 251), 0, height, Color.WHITE, false);     // 创建渐变色对象
    chart.setBackgroundPaint(chartGP);     // 设置图片背景色
    //通过JFreeChart实例的getCategoryPlot()方法获得CategoryPlot类的实例,目的是设置绘图区的绘图属性,代码如下:
    CategoryPlot plot = chart.getCategoryPlot();
    //设置绘图区的相关绘图属性,代码如下:
    plot.setBackgroundPaint(new Color(241, 219, 127));     // 设置绘图区背景色
    plot.setRangeGridlinePaint(Color.RED);     // 设置水平方向背景线颜色
    plot.setRangeGridlinesVisible(true);     // 设置是否显示水平方向背景线,默认值为True
    plot.setDomainGridlinePaint(Color.RED);     // 设置垂直方向背景线颜色
    plot.setDomainGridlinesVisible(true);     // 设置是否显示垂直方向背景线,默认值为False

    BarRenderer renderer = (BarRenderer) plot.getRenderer();
    //在这里不绘制柱形的轮廓线,JFreeChart默认为绘制,代码如下:
    renderer.setDrawBarOutline(false);
    //下面设置柱形的填充颜色,同样采用渐变效果,代码如下:
    Color color[] = new Color[cutline.length];
    color[0] = new Color(99, 99, 0);
    color[1] = new Color(255, 169, 66);
    color[2] = new Color(33, 255, 66);
    for (int i = 0; i < color.length; i++) {
        GradientPaint gp = new GradientPaint(0, 0, color[i].brighter(), 0,
                 height, color[i].darker());
        renderer.setSeriesPaint(i, gp);
    }

    CategoryAxis domainAxis = plot.getDomainAxis();
    domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
    ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());

    HttpSession session = request.getSession();
    String fileName = "";
    try {
        fileName = ServletUtilities.saveChartAsPNG(chart, width, height, info, session);
    } catch (IOException e) {

    }

    request.setAttribute("fileName", fileName);
    return mapping.findForward("showChart");
    }
    <img src="DisplayChartAction?method=show&filename=${fileName}" />
    这样就可以了。