论坛首页 Java版

请大家给看看JFreeChart的一个程序问题

浏览 3902 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2005-11-03
<%@ page contentType="text/html;CHARSET=utf8"%>
<%@ 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.data.category.CategoryDataset,
                org.jfree.data.general.DatasetUtilities,
                org.jfree.chart.plot.CategoryPlot,
                org.jfree.chart.axis.CategoryAxis,
                org.jfree.chart.axis.ValueAxis,
                org.jfree.chart.renderer.category.BarRenderer3D,
                org.jfree.chart.labels.StandardCategoryItemLabelGenerator,
                org.jfree.chart.axis.AxisLocation"%>
<%
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.setItemLabelFont(new Font("黑体",Font.PLAIN,20));
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 %>">

######################################
红色的部分是为了显示每个柱状图对应的double[][] data变量中的数字,可为什么显示不出来?谢谢
   
最后更新时间:2005-11-03
这是我用的包:jfreechart-1.0.0-rc1.jar
   
0 请登录后投票
最后更新时间:2005-11-03
强烈昏倒,你把其中一句注释掉了,当然显示不了。

Look:
引用

/显示每个柱的数值,并修改该数值的字体属性renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
   
0 请登录后投票
最后更新时间:2005-11-04
kurastdocks 写道
强烈昏倒,你把其中一句注释掉了,当然显示不了。

Look:
引用

/显示每个柱的数值,并修改该数值的字体属性renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
不好意思,是贴的时候换行错误,那行程序本来是没给注释掉的。请大家给小弟看看
   
0 请登录后投票
最后更新时间:2005-11-04
你仅仅是数字显示不出来吗?我试了一下,怎么觉得没问题啊?
为了简单我是直接show的。应该没有什么区别。
我的代码:
[code:1]
   public void test () {


        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.setItemLabelFont(new Font("黑体", Font.PLAIN, 20));
        renderer.setItemLabelsVisible(true);
        plot.setRenderer(renderer);

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

        ChartPanel panel = new ChartPanel(chart);
        panel.setSize(400,600);
        panel.setVisible(true);
        JFrame frame = new JFrame();
        frame.getContentPane().add(panel);
        frame.show();
//        String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null,
//                session);
//        String graphURL = request.getContextPath() +
//                          "/servlet/DisplayChart?filename=" + filename;
    }
[/code:1]
   
0 请登录后投票
最后更新时间:2005-11-04
[img][/img]
   
0 请登录后投票
最后更新时间:2005-11-04
kurastdocks我又试了你的代码也是不行啊,我上面发的图片的红圈部分还是没有数字,你的显示有?
   
0 请登录后投票
最后更新时间:2005-11-04
我的有啊。
   
0 请登录后投票
最后更新时间:2005-11-04
太奇怪,我这里就没有,为什么呢
   
0 请登录后投票
最后更新时间:2005-11-04
使用的jar包不一样吗
   
0 请登录后投票
论坛首页 Java版

跳转论坛:
JavaEye推荐