(我修复了以前帖子中保存和加载的一些问题)
我将一些数据(mydata)和日期保存为字符串(dates_Strings)。
在图表活动中,我加载数据和日期。我将dates_Strings转换为日期,以便在图中使用它们。
现在,在10/05/13输入一些数据,例如“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”并按“保存”。
所以,我在同一天(08/05/13)有数据“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");
}
但它只保存最后输入的数据..
答案 0 :(得分:0)
这看起来像是TimeSeries
的错误用法。您在代码中呼叫series.add(i, something)
,其中something
为mydata.get(i)
。这意味着调用add(double x, double y)
中TimeSeries
继承的方法XYSeries
,因此x
在您的案例中介于0
和mydata.size() - 1
之间。< / p>
请确保您在add(Date x, double value)
中正确调用TimeSeries
方法。