Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / XYStepRenderer чтобы понимал метку времени как конец интервала / 1 сообщений из 1, страница 1 из 1
11.09.2015, 15:15
    #39049310
sanBez
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XYStepRenderer чтобы понимал метку времени как конец интервала
Приветствую всех.

Вдруг откуда ни возьмись появилось ... jfreecart
Надо поправить вывод графика. Сейчас выводится через XYBarRenderer или XYLineAndShapeRenderer или XYStepRenderer.
Данные с разным качеством - для каждого качества своя серия. Метка времени данных - конец интервала. Пусть для простоты считаем что данные с интервалом в полчаса.

Наполнение датасет написал примерно так (с jfreechart ранее не практически не работал) :
немного кода
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
  /**
   * Добавить измерения в серии
   * @param data добавляемые измерения
   * @param series карта серий куда писать
   */
  private void addMeasuresToSeries(Collection<Measure> data, Map<String, XYSeries> series) {
    for (Measure measure: measures) {
      String seriesName = createSeriesName(measure);
      series.get(seriesName).add(measure.getTimestamp().getTime(), measure.getValue());
      
      if (seriesName.equals(getSeriesManual())) {
        // ручной ввод пишем в нормальный чтобы на графике его перекрыл. Если не писать - будет два графика с разрывом
        // наверно надо писать о остальные, но пока не вижу смысла.
        series.get(getSeriesNormal()).add(measure.getTimestamp().getTime(), measure.getValue());
      }
    }
  }

  private String createSeriesName(Measure measure) {
    String seriesName = getSeriesNormal();
    Quality quality = Quality.getQualityByCode(measure.getQuality());
    if (quality != null) {
      switch (quality) {
        case NOT_DATA: 
          seriesName = getSeriesNodata();
          break;
        case NOT_COMLPETE: 
          seriesName = getSeriesNotComplete();
          break;
        case MANUAL: 
          seriesName = getSeriesManual();
          break;
        default: 
          seriesName = getSeriesNormal();
          break;
      }
    }
    return seriesName;
  }



Вывод через XYBarRenderer или XYLineAndShapeRenderer в принципе меня устраивает. А с XYStepRenderer беда.

При данных типа
20.01.2015 09:00 50
20.01.2015 09:30 100
20.01.2015 10:00 200

на графике получается что линия 100 отображается с 9:30 до 10:00. А надо с 9:00 до 9:30
Можно в принципе дату корячить сдвигая на нужное время назад при формировании dataset, но ...не хочется.
Обмануть его можно?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / XYStepRenderer чтобы понимал метку времени как конец интервала / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]