就是上面这种图片,数据信息是每0.01秒有一个,搞了很久都没解决,第一次用Jfreechart,还不太熟悉,求帮忙!

解决方案 »

  1.   


            //X轴单位数据
            String[] columKeys = {"0","10","20","30","40","50","60"};
            //创建Dataset对象
            CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columKeys, data);
      

  2.   

    回复于: 2013-07-09 11:16:25 
    Java code
    ?
    1234         //X轴单位数据        String[] columKeys = {"0","10","20","30","40","50","60"};        //创建Dataset对象        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columKeys, data); 
      

  3.   

    columKeys 的大小不是要和data的一致?我记得我之前这么写是报错的
      

  4.   

    //X軸
    DateAxis domainAxis = (DateAxis) categoryplot.getDomainAxis();
    domainAxis.setTickLabelFont(new Font("Dialog", Font.PLAIN, 10));
    SimpleDateFormat formatter = new SimpleDateFormat("ss秒");
    DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss:SS");
    domainAxis.setAutoTickUnitSelection(false);
    DateTickUnit tickUnit = new DateTickUnit(DateTickUnitType.SECOND, 10, formatter);
    domainAxis.setTickUnit(tickUnit);
    domainAxis.setMinimumDate(sdf.parse(happenDate+":00:000"));
    domainAxis.setMaximumDate(sdf.parse(happenDate+":60:000"));
      

  5.   

    DateAxis xAxis = (DateAxis) plot.getDomainAxis();// X横轴刻度设计
    xAxis.setTickUnit(new DateTickUnit(DateTickUnit.DAY, 1,
    new SimpleDateFormat("d")));这是设置x轴刻度的代码 不过我这是以天数为x轴  这里了需要你思考一下 怎么换成你要的那种方式 
      

  6.   


    既然多了9秒 那就减到处理了domainAxis.setMinimumDate(sdf.parse(happenDate+":-1:000"));
    domainAxis.setMaximumDate(sdf.parse(happenDate+":61:000"));这两句我修改之后可以显示0秒,10秒,20秒,30秒,40秒,50秒,0秒。但是出不来60秒怎么办?
      

  7.   

    用higncharts吧 拼json对象到前台就OK了
      

  8.   

    最后改变了原来X轴为时间轴的思路,把X轴改用数据NumberAxis,实现了坐标,最后秒只能勉为其难修改了式样,放到了x轴最后固定显示。// X軸
    NumberAxis domainAxis = (NumberAxis) categoryplot.getDomainAxis();
    domainAxis.setTickLabelFont(new Font("", Font.PLAIN, 12));
    domainAxis.setTickMarksVisible(true);// 標尺
    domainAxis.setUpperMargin(0.001);
    domainAxis.setLowerMargin(0);
    double unitT;
    if (dataXzE - dataXzS == 10) {
    unitT = 1d;
    } else if (dataXzE == 0) {
    unitT = 10d;
    } else {
    unitT = (dataXzE - dataXzS) / 6d;
    }
    NumberTickUnit ntuT = new NumberTickUnit(unitT);
    domainAxis.setTickUnit(ntuT);
    谢谢各位的帮忙,对于这么晚结贴很抱歉