Вертикальная метка JFreeChart для IntervalMarker

Я хотел бы повернуть метку для IntervalMarker:

        IntervalMarker im = new IntervalMarker(...);
        im.setLabel("LABEL");
//      im.setLabelOffsetType(LengthAdjustmentType.EXPAND);
//      im.setLabelOffset(new RectangleInsets(10.0, 10.0, 10.0, 10.0)); 
//      im.setLabelFont(new Font("SansSerif", Font.ITALIC, 11));
        im.setLabelAnchor(RectangleAnchor.TOP_LEFT);
        im.setLabelTextAnchor(TextAnchor.TOP_LEFT);
        im.setPaint(new Color(208, 194, 214));

Мне не удалось загрузить картинку, вот ссылка: http://i54.tinypic.com/5z40fs.png

Я хотел бы, чтобы "ЭТИКЕТКА" была вертикальной, для лучшего внешнего вида.

Спасибо


person wervdon    schedule 12.08.2011    source источник
comment
Изображение ссылки больше не работает.   -  person simgineer    schedule 11.12.2018


Ответы (3)


Я обнаружил, что проще добавлять текстовые аннотации к вертикальным маркерам для большего контроля над их метками. Вот пример:

// vertical line marker and label
Marker updateMarker = new ValueMarker(dayOf, Color.black, dashedStroke, null, null, 1.0f);    
XYTextAnnotation updateLabel = new XYTextAnnotation("Update", dayOf - labelOffset, labelHeight);
updateLabel.setFont(new Font("Sans Serif", Font.BOLD, 10));
updateLabel.setRotationAnchor(TextAnchor.BASELINE_CENTER);
updateLabel.setTextAnchor(TextAnchor.BASELINE_CENTER);
updateLabel.setRotationAngle(-3.14 / 2);
updateLabel.setPaint(Color.black);
plot.addDomainMarker(updateMarker, Layer.BACKGROUND);
plot.addAnnotation(updateLabel);

Этот поворот приводит к тому, что метка появляется слева от вертикальной линии маркера, читая снизу вверх. Я использую переменные «labelOffset» и «labelHeight», чтобы определить точное положение метки по отношению к вертикальной линии, но они также могут быть установлены статически.

person MAK Design Labs    schedule 14.11.2012
comment
Фантастический. Это очень помогло. Всего один комментарий: координаты x и y в конструкторе XYTextAnnotation не относятся к пикселям или абсолютным позициям на диаграмме. Он относится к значениям, ранее установленным в XYSeries, что позволяет очень легко вычислить координаты. - person Albert; 05.11.2015

Визуализация метки маркера обрабатывается методом draw{Domain|Range}Marker() средства визуализации графика с использованием drawAlignedString(). Вместо этого вам придется использовать drawRotatedString().

person trashgod    schedule 12.08.2011
comment
Это делается с помощью TextUtilities.drawRotatedString(...) или каким-либо другим способом? Можно ли привести пример или ссылку? - person simgineer; 12.12.2018
comment
Да; SimulationPlot является типичным. - person trashgod; 12.12.2018

Я не смог найти, как это сделать напрямую, но вы всегда можете поместить повернутую текстовую аннотацию в нужное место.

person mhsmith    schedule 05.09.2011