图表应用中缺失点的处理


例如画出如下表所示的曲线图。

00:001426
00:151408
00:301400
00:451390
01:001439
01:451203
02:001489
03:001456
03:151490
 …………
该图要求每隔5分钟一个点,但表中缺少很多时间的点。因此作图的时候要体现出空点来。

	 	//获得X轴的坐标 
public static  String [] getAllLablesByfive(){
     String time[]=new String[24*12];
     String e="";
     for(int i=0;i<24;i++){
         e="";
         if(i<10){
             e="0";
         }    
         for(int j=0;j<60;j++){
             if (j%5 ==0){
                  if(j<10){
                       time[i*12+j/5]=e+i+":0"+j;
                  }else{
                       time[i*12+j/5]=e+i+":"+j;
                  }
             }
                    
         }         
    }
    return time;
}
 //获取表格中的数据
public List<String[]> getDataAndTime(DefaultTableModel dtm, int  column){
    List<String[]> list = new ArrayList<String[]>();
    String[] str;
    for(int i=0;i<dtm.getRowCount(); i++){
        str = new String[2];
        str[0] = dtm.getValueAt(i, 0).toString();
        str[1] = dtm.getValueAt(i, column).toString();
        list.add(str);
    }
    return list;
}
//处理Y轴的数据
public static double[] getDataViewerSetByDateOfFive(List<String[]> list,int len) throws Exception {
    double[] res = getNoValueAry(len);  //此为chartDirector允许的空点的值
    if (list != null && list.size() > 0) {
        int i=0;
        for(String [] o:list){
           i=getCdqMinuteByfive(o[0],"HH:mm:ss")-1;
           if(i<len&&MyUtils.isNumeric(o[1])){
               res[i]=Double.parseDouble(o[1]);
           }
        }
     }
     return res;
}
//返回坐标
public static int getCdqMinuteByfive(String dateStr,String pattern)throws Exception{
      int x=0;
      SimpleDateFormat format = new SimpleDateFormat(pattern);
      Date date = format.parse(dateStr);
      Calendar calendar = new GregorianCalendar();
      calendar.setTime(date);
      x=calendar.get(Calendar.HOUR_OF_DAY)*12;
      x=x+calendar.get(Calendar.MINUTE)/5+1;
     return x;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值