2011-08-12 47 views
1

我想旋轉標籤的IntervalMarker:JFreeChart的垂直標籤爲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」垂直放置,以獲得更好的外觀。

謝謝

回答

2

渲染標記的標籤是通過使用drawAlignedString()情節的渲染器的draw{Domain|Range}Marker()方法處理。您必須改用drawRotatedString()

0

我找不到如何直接做到這一點,但你總是可以把一個旋轉的文本註釋放在適當的地方。

2

我發現將文本註釋添加到垂直標記以更好地控制其標籤更容易。以下是一個示例:

// 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」來確定標籤相對於垂直線的確切位置,但這些也可以靜態設置。

+1

正是我在找的 - 謝謝! –

+0

太棒了。這幫了很多。只需要註釋一下:'XYTextAnnotation'構造函數中的'x'和'y'座標不會引用圖表中的像素或絕對位置。它指的是之前在'XYSeries'中設置的值,這使得計算座標非常容易。 – Albert