Как добавить простую горизонтальную линию в Y значение JFreeChart TimeSeries

Я создал диаграмму примерно так:

Основной код, используемый для добавления и / или обновления информации:

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd H:mm:ss");
Date date = simpleDateFormat.parse(dateAsStringToParse);
Second second = new Second(date);
myInfo.getSeries().addOrUpdate(second, maxValue); // maxValue is an Integer

А для создания актуального графика:

final XYDataset dataset = new TimeSeriesCollection(myInfo.getSeries());
JFreeChart timechart = ChartFactory.createTimeSeriesChart(myInfo.getName()
    + " HPS", "", "HPS", dataset, false, false, false);

Я хотел бы просто добавить горизонтальную линию (параллельную оси X (время)) с постоянным значением, скажем, 10000. Так что график будет выглядеть примерно так:

Какой самый простой (самый правильный) способ добиться этого с помощью моего кода?

1 ответ

Решение

Похоже, вы хотите XYLineAnnotation, но координаты для TimeSeries может быть хлопотно Начиная с TimeSeriesChartDemo1 Я внес следующие изменения, чтобы получить график.

  1. Во-первых, нам нужно x значение для первого и последнего RegularTimePeriod в TimeSeries,

    long x1, x2;
    …
    x1 = s1.getTimePeriod(0).getFirstMillisecond();
    x2 = s1.getNextTimePeriod().getLastMillisecond();
    
  2. Тогда постоянная y ценность проста; Я выбрал 140.

    double y = 140;
    

    Кроме того, вы можете получить значение из вашего TimeSeries, например.

    double y = s1.getMinY() + ((s1.getMaxY() - s1.getMinY()) / 2);
    
  3. Наконец, мы создаем аннотацию и добавляем ее к графику.

    XYLineAnnotation line = new XYLineAnnotation(
        x1, y, x2, y, new BasicStroke(2.0f), Color.black);
    plot.addAnnotation(line);
    

образ

Другие вопросы по тегам