不显示数据-jfreechat线型图的createLineChart()

时间:2008-08-19 14:12:44   来源:论坛整理  作者:  编辑:chinaitzhe
我用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轴的虚线。


我不清楚是不是某一步骤设错了,如果你知道,请赐教,谢谢。
网友回复:用jfreechart生成3D柱状图的代码,自己挑有用的参考:

Java code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





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;

    }

    



}






网友回复:如果有帮助的话,别忘了给分哈
网友回复:谢谢,正好需要
关键字:数据,

相关文章

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面