在x轴的日期被叠加 - 曲线示出的最后一个输入的数据的2倍(当不使用setXAxisMax)(dat

2019-09-02 04:11发布

(我就定我以前的帖子,保存,加载一些问题)

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

在图中的活动我加载数据和dates.And我转换dates_Strings为日期,以便在情节使用它们。

现在,虽然在13年10月5日进入例如“1”的一些数据,“2”,“3”,我得到了下面的图片。

所有好直到现在。

如果我尝试在其他日期(13/05/13)我得到这个图像输入一些更多的数据(“3,4,7”)。

日期重叠。

在MainActivity:

代码:

        //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”的两个点(第二数据)。 :

------------------ UPDATE ------------------------------- ---------

好吧,我想在文件中保存数据时的问题所在。

用户在一个EditText字段中输入一些数据(MYDATA),然后按下保存按钮,其与当前的日期一起保存该数据。

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

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

所以,我在同一天(13年8月5日)的数据“1”和“2”。

我想保存的时间的一个实例(因为它是在同一日期),以便具有在x轴的一个点(日期)和在y轴的2点(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");
      }

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

Answer 1:

这看起来像一个错误使用TimeSeries 。 您呼叫series.add(i, something) ,其中somethingmydata.get(i)在你的代码。 这意味着,该方法add(double x, double y)通过继承TimeSeriesXYSeries被调用,所以x你的情况之间的范围内0mydata.size() - 1

只要确保你正确地调用add(Date x, double value)的方法TimeSeries



文章来源: dates in x axis are superimposed - plot shows the last entered data 2 times (when not using setXAxisMax)