даты на оси x наложены - график отображает последние введенные данные 2 раза (если не используется setXAxisMax)
(Я исправил некоторые проблемы с сохранением и загрузкой моих предыдущих сообщений)
Я сохраняю некоторые данные (mydata) и дату в виде строк (date_Strings).
В графике активности я загружаю данные и даты. И конвертирую date_Strings в даты, чтобы использовать их на графике.
Теперь, вводя некоторые данные, например, «1», «2», «3» в 10.05.13, я получаю следующее изображение.
Все хорошо до сих пор.
Если я попытаюсь ввести дополнительные данные («3,4,7») в другую дату (13/05/13), я получаю это изображение.
Даты накладываются.
Основная деятельность:
Код:
//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» и нажимает «сохранить».
Итак, у меня есть данные «1» и «2» на одну и ту же дату (08/05/13).
Я хочу сохранить один экземпляр даты (потому что это одна и та же дата), чтобы иметь одну точку (дату) на оси x и 2 точки (1 и 2) на оси y.
Я сохраняю как:
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");
}
но сохраняет только последние введенные данные ..