我用ChartFactory.createLineChar创建线型图,代码为:
 
<%
DefaultCategoryDataset dataZZ = new DefaultCategoryDataset(); 
dataZZ.addValue(1, "春季=1","春季");
dataZZ.addValue(42, "夏季=42","夏季");
dataZZ.addValue(7, "秋季=7","秋季");
dataZZ.addValue(0, "冬季=0","冬季");
 
JFreeChart chartXX = ChartFactory.createLineChart("季度统计","","数值",dataZZ,PlotOrientation.VERTICAL,true,false,false);
  chartXX.setBackgroundPaint(Color.WHITE);
  chartXX.setBorderPaint(new GradientPaint(0,0,Color.white,0,1000,Color.blue));
  CategoryPlot plotXX = chartXX.getCategoryPlot();
  plotXX.setForegroundAlpha(0.8f);
  String filenameXX=ServletUtilities.saveChartAsJPEG(chartXX,600,400,session);
  String graphURLXX=request.getContextPath()+"/servlet/DisplayChart?filename="+filenameXX;
%>
<img src="<%=graphURLXX%>" border=0 usemap="#map0">
 
 
出来的效果是没有想象中的线图,只有XY轴和平行X轴的虚线。 
我不清楚是不是某一步骤设错了,如果你知道,请赐教,谢谢。

解决方案 »

  1.   

    用jfreechart生成3D柱状图的代码,自己挑有用的参考:
    package barchart3d;import campaign.BaseCamp;
    import java.awt.Dimension;
    import java.awt.Color;import javax.swing.JCheckBox;
    import javax.swing.JPanel;import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartPanel;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.axis.CategoryAxis;
    import org.jfree.chart.axis.CategoryLabelPositions;
    import org.jfree.chart.plot.CategoryPlot;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.chart.renderer.category.BarRenderer3D;
    import org.jfree.data.category.CategoryDataset;
    import org.jfree.data.category.DefaultCategoryDataset;
    import org.jfree.ui.ApplicationFrame;
    import org.jfree.ui.RefineryUtilities;
    import campaign.*;//public class BarChart3D extends ApplicationFrame
    public class BarChart3D
    {
        public JPanel jpanel;
        public BarChart3D(String[][] arrStrData) {
    //super(string);//Windows Form name
            //String[][] arrStrData =  CampOption.getPictureData(myCamp);
                                 /*{{"10","项目1","时间段1"},
                                 {"15","项目2","时间段1"},
                                 {"12","项目1","时间段2"},
                                 {"16","项目2","时间段2"}};*/                            
            try{
       jpanel = createPanel(createDataset(arrStrData),"综合数据分析","季度值","数值");
       jpanel.setPreferredSize(new Dimension(500, 400));
       //setContentPane(jpanel);
            }catch(CategoryDataException e){e.printStackTrace();}
        }
        
        //生成测试数据集
        private CategoryDataset createDataset() {
    DefaultCategoryDataset defaultcategorydataset
        = new DefaultCategoryDataset();
    defaultcategorydataset.addValue(10.0, "增员数量", "第一季度");
    defaultcategorydataset.addValue(4.0, "增员数量", "第二季度");
    defaultcategorydataset.addValue(15.0, "增员数量", "第三季度");
    defaultcategorydataset.addValue(14.0, "增员数量", "第四季度");
    defaultcategorydataset.addValue(5.0, "新客户数量", "第一季度");
    defaultcategorydataset.addValue(7.0, "新客户数量", "第二季度");
    defaultcategorydataset.addValue(14.0, "新客户数量", "第三季度");
    defaultcategorydataset.addValue(3.0, "新客户数量", "第四季度");
    return defaultcategorydataset;
        }
        
        //根据传入的数组创建CategoryDataset数据集
        private CategoryDataset createDataset(String[][] arrStrData) throws CategoryDataException {
            if(arrStrData.length==0) throw new CategoryDataException("数组长度为零,不能创建Category数据集。");
            if(arrStrData.length>0)
            if(arrStrData[0].length != 3) throw new CategoryDataException("数组列数不为3,不能创建Category数据集。");
            DefaultCategoryDataset defaultcategorydataset
        = new DefaultCategoryDataset();
            for(int i=0;i<arrStrData.length;i++){
                if(arrStrData[i][1].length() == 0) throw new CategoryDataException("数据行"+(i+1)+"列2长度为0,不能创建Category数据集。");
                if(arrStrData[i][2].length() == 0) throw new CategoryDataException("数据行"+(i+1)+"列3长度为0,不能创建Category数据集。");
                defaultcategorydataset.addValue(Double.valueOf(arrStrData[i][0]), arrStrData[i][1], arrStrData[i][2]);
            }
            return defaultcategorydataset;
        }
        
        //生成JFreeChart对象
        private JFreeChart createChart(CategoryDataset categorydataset,
                                         String strChartName,
                                         String strAxisName,
                                         String strValueAxisName) {
    JFreeChart jfreechart
        = ChartFactory.createBarChart3D(strChartName/*数据图名称*/, 
                                                strAxisName/*时间轴名称*/,
        strValueAxisName/*数值轴名称*/, 
                                                categorydataset,
        PlotOrientation.VERTICAL, true,
        true, false);
    CategoryPlot categoryplot = (CategoryPlot) jfreechart.getPlot();
    categoryplot.setDomainGridlinesVisible(true);
    CategoryAxis categoryaxis = categoryplot.getDomainAxis();
            //设置“Category X”字样的摆放角度,以double类型的数值给出
    categoryaxis.setCategoryLabelPositions
        (CategoryLabelPositions.STANDARD);//double类型的数值
        //(CategoryLabelPositions.createUpRotationLabelPositions(0.39269908169872414));
            
            //categoryaxis.setLowerMargin(0.0);//最小的Category距Value轴的距离
            //categoryaxis.setUpperMargin(0.0);//最小的Category距对面虚Value轴的距离
            //自动分割各个系列之间的距离
    //categoryaxis.setCategoryMargin(0.2);//各个Category之间相对于整个时间轴长度的百分比距离
    BarRenderer3D barrenderer3d
        = (BarRenderer3D) categoryplot.getRenderer();
            //barrenderer3d.setItemMargin(0.0);//各个render对象之间的距离(即各个柱体之间的距离),不设置则自动调整
            //barrenderer3d.setWallPaint(Color.gray);//设置3D侧面墙的颜色
            //barrenderer3d.setSeriesPaint(0, Color.GREEN);//设置第一根柱体颜色
    barrenderer3d.setDrawBarOutline(true);//是否画棱线(各面相交产生的线段)
    return jfreechart;
        }
        
        //将JFreeChart对象包装在JPanel对象内
        public JPanel createPanel(CategoryDataset categorydataset,
                                    String strChartName,
                                    String strAxisName,
                                    String strValueAxisName) {
    JFreeChart jfreechart = createChart(categorydataset,
                                                  strChartName,
                                                  strAxisName,
                                                  strValueAxisName);
    return new ChartPanel(jfreechart);
        }
        
        public JPanel getPanel() {
    return jpanel;
        }
        }