• 图表应用中缺失点的处理



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

    00:00 1426
    00:15 1408
    00:30 1400
    00:45 1390
    01:00 1439
    01:45 1203
    02:00 1489
    03:00 1456
    03:15 1490
     …… ……

    该图要求每隔5分钟一个点,但表中缺少很多时间的点。因此作图的时候要体现出空点来。

     1          //获得X轴的坐标 
     2 public static  String [] getAllLablesByfive(){
     3      String time[]=new String[24*12];
     4      String e="";
     5      for(int i=0;i<24;i++){
     6          e="";
     7          if(i<10){
     8              e="0";
     9          }    
    10          for(int j=0;j<60;j++){
    11              if (j%5 ==0){
    12                   if(j<10){
    13                        time[i*12+j/5]=e+i+":0"+j;
    14                   }else{
    15                        time[i*12+j/5]=e+i+":"+j;
    16                   }
    17              }
    18                     
    19          }         
    20     }
    21     return time;
    22 }
    23  //获取表格中的数据
    24 public List<String[]> getDataAndTime(DefaultTableModel dtm, int  column){
    25     List<String[]> list = new ArrayList<String[]>();
    26     String[] str;
    27     for(int i=0;i<dtm.getRowCount(); i++){
    28         str = new String[2];
    29         str[0] = dtm.getValueAt(i, 0).toString();
    30         str[1] = dtm.getValueAt(i, column).toString();
    31         list.add(str);
    32     }
    33     return list;
    34 }
    35 //处理Y轴的数据
    36 public static double[] getDataViewerSetByDateOfFive(List<String[]> list,int len) throws Exception {
    37     double[] res = getNoValueAry(len);  //此为chartDirector允许的空点的值
    38     if (list != null && list.size() > 0) {
    39         int i=0;
    40         for(String [] o:list){
    41            i=getCdqMinuteByfive(o[0],"HH:mm:ss")-1;
    42            if(i<len&&MyUtils.isNumeric(o[1])){
    43                res[i]=Double.parseDouble(o[1]);
    44            }
    45         }
    46      }
    47      return res;
    48 }
    49 //返回坐标
    50 public static int getCdqMinuteByfive(String dateStr,String pattern)throws Exception{
    51       int x=0;
    52       SimpleDateFormat format = new SimpleDateFormat(pattern);
    53       Date date = format.parse(dateStr);
    54       Calendar calendar = new GregorianCalendar();
    55       calendar.setTime(date);
    56       x=calendar.get(Calendar.HOUR_OF_DAY)*12;
    57       x=x+calendar.get(Calendar.MINUTE)/5+1;
    58      return x;
    59 }


  • 相关阅读:
    过滤器--起步阶段
    常用指令-起步阶段
    模型和控制器-起步阶段
    指令介绍-起步阶段
    AngularJS简介-起步阶段
    c++之helloworld与命名空间
    c++ 之重要性
    一个没曾摸透的程序
    linux中什么是文件结构体?
    很全的linux网络编程技巧
  • 原文地址:https://www.cnblogs.com/freeabyss/p/3187053.html
Copyright © 2020-2023  润新知