JFreeChart DomainAxis java2DToValue не преобразуется должным образом, если на графике есть один TimeSeriesDataItem - PullRequest
0 голосов
/ 24 февраля 2012

Я пытаюсь нарисовать XYLineAnnotation для построения. Я рассчитываю длину линии (параметр lineLength) после некоторых операций. Хотя chartX и chartX + lineLength различны, преобразованные значения одинаковы (chartXx и chartYy). Так что линия не является на экране. Координаты начала и конца X совпадают.

Я думаю, что я не делал никакой реализации, которая зависит от элементов в plot. Но код работает правильно, если для plot есть один TimeSeriesDataItem. Я думаю, что в некоторых случаях он будет отображать такие большие линии. Максимальное значение переменной lineLength составляет 18 пикселей. Поэтому не следует рисовать такие длинные линии.

    DateAxis domainAxis = (DateAxis) plot.getDomainAxis();
    RectangleEdge domainAxisEdge = plot.getDomainAxisEdge();
    Minute min = /** Minute presentation of only point in graph*/
    Double chartX = domainAxis.valueToJava2D(min.getFirstMillisecond(), subRect, domainAxisEdge);
    Double chartXx = domainAxis.java2DToValue(chartX, subRect, domainAxisEdge);
    Double chartYy = domainAxis.java2DToValue(chartX + lineLength, subRect, domainAxisEdge);
    XYLineAnnotation d = new XYLineAnnotation(chartXx, yValue, chartYy,
            yValue);
    futurePlot.addAnnotation(d);

1 Ответ

0 голосов
/ 25 февраля 2012

Тип периода TimeSeriesDataItem - Минута.Я установил это значение как минимальный диапазон. Используя функцию min.next (), я получил новый Period. Затем я устанавливаю Range of Domain.Я повторил, что если на графике существует только одна точка, он не распознает другие значения пространства данных.

...