0

(我修复了一些关于我以前的帖子的保存和加载问题)

我将一些数据(mydata)和日期保存为字符串(dates_Strings)。

在图形活动中,我加载数据和日期。我将 dates_Strings 转换为日期,以便在绘图中使用它们。

现在,在 2013 年 10 月 5 日输入一些数据(例如“1”、“2”、“3”)时,我得到了以下图像。

第一张图片

到目前为止一切都很好。

如果我尝试在另一个日期(13/05/13)输入更多数据(“3,4,7”),我会得到这张图片。

第二张图片

日期是叠加的。

主要活动:

编码:

        //copy the dates_asString to date (Dates) in order to use them in TimeSeries
        SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy",Locale.US);
        Date convertedDate;
        try{
       for (int k=0;k<mydata.size();k++){
        convertedDate = formatter.parse(dates_Strings.get(k));
        date.clear();
        date.add(convertedDate);
        Log.d("line","convertedDate :"+convertedDate);
       }
        }catch ...


        //TimeSeries series = new TimeSeries("Showing data");
        //for (int i=0;i<mydata.size();i++){    
        //  series.add(i,mydata.get(i));    
        //}

        XYSeries series = new XYSeries("Showing data");
           for (int i=0;i<mydata.size();i++){   
        series.add(i,mydata.get(i));    
    }


        XYMultipleSeriesDataset dataset=new XYMultipleSeriesDataset();
        dataset.addSeries(series);



        XYSeriesRenderer renderer =new XYSeriesRenderer();
        renderer.setColor(Color.YELLOW);
        ...

        XYMultipleSeriesRenderer mRenderer =new XYMultipleSeriesRenderer();
        mRenderer.addSeriesRenderer(renderer);
        ...
        mRenderer.setXRoundedLabels(false);
        mRenderer.setXLabels(0);


        //mRenderer.setXAxisMax(mydata.size()); 

        for (int i=0;i<mydata.size();i++){
            mRenderer.addXTextLabel(i,dates_Strings.get(i));

        }

例如,我在 setXAxisMax 中输入了 14/05/2013 的值,并在 10/05 和 13/05 中输入了数据。

当我使用 setXAxisMin 时,情节完全是空的。

如果我不使用 setXAxisMax ,则会出现另一个奇怪的问题。我输入“1”和“2”作为数据,但该图在两点上显示“2”(第二个数据)。:

第三张图片

- - - - - - - - - 更新 - - - - - - - - - - - - - - - - ---------

好的,我认为问题在于将数据保存在文件中。

用户在编辑文本字段中输入一些数据(mydata),然后按下保存按钮,该按钮将该数据与当前日期一起保存。

例如,用户输入“1”并按“保存”。

用户输入“2”并按“保存”。

所以,我在同一日期(08/05/13)有数据“1”和“2”。

我想保存一个日期实例(因为它是同一个日期),以便在 x 轴上有一个点(日期),在 y 轴上有两个点(1 和 2)。

我保存为:

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));
              for (int i=0;i<mydata.size();i++){

           bw.write(mydata.get(i)+","+dates_Strings.get(i)+"\n");
              }

我想:

      for (int i=1;i<mydata.size();i++){

          bw.write(mydata.get(i)+",");

    while (!(dates_Strings.get(i).equals(dates_Strings.get(i-1))))   

              bw.write(dates_Strings.get(i)+"\n");
      }

但它只保存最后输入的数据..

4

1 回答 1

0

这看起来像是对TimeSeries. 您正在调用代码series.add(i, something)中的位置。这意味着调用from继承的方法,因此在您的情况下介于和之间。somethingmydata.get(i)add(double x, double y)TimeSeriesXYSeriesx0mydata.size() - 1

只需确保您正确add(Date x, double value)调用TimeSeries.

于 2013-05-07T17:08:12.677 回答