IntervalMarker的JFreeChart垂直标签

时间:2011-08-12 09:15:55

标签: java rotation jfreechart marker

我想旋转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

我希望“LABEL”垂直,以获得更好的外观。

谢谢

3 个答案:

答案 0 :(得分:3)

渲染标记的标签由绘图渲染器的draw{Domain|Range}Marker()方法使用drawAlignedString()处理。您必须使用drawRotatedString(),而不是。

答案 1 :(得分: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”来确定标签相对于垂直线的确切位置,但这些也可以静态设置。

答案 2 :(得分:0)

我找不到如何直接执行此操作,但您始终可以将旋转的文本注释放在适当的位置。