2012-07-06 77 views
2

我創建了一個包含多個頻段作爲類別軸的BarChart。我想要做的就是展示這些頻段的可視分組:JFreeChart BarChart - 類別標記

例如:

頻率X1〜頻率X2 =帶Y(因此域軸具有類X1值,X1.1, x1.2到x2) 頻率x3〜頻率x4 =頻帶z(x3,x3.1 ..... x4)

我想要做的是在圖中顯示頻段Y和頻段Z的標記。請注意,根據我可能得到的數據集,並非所有類別都可能存在。例如,對於第一個示例,我已經獲得了x1到x1.6的值,因此帶標記將從x1到x1.6。

我希望我能解釋我的要求。這是可能的JFreeChart?如果是這樣,我該如何去實現這一目標?

只是爲了澄清多一點,那我想實現的東西here's a pictureenter image description here

回答

3

做你的波段對應分類?如果他們這樣做,你可以使用一個CategoryMarker

CategoryMarker marker = new CategoryMarker("Category 3"); 
marker.setLabel("Band Y"); 
marker.setPaint(Color.red); 
marker.setOutlinePaint(Color.red); 
marker.setAlpha(0.5f); 
marker.setLabelAnchor(RectangleAnchor.TOP); 
marker.setLabelTextAnchor(TextAnchor.TOP_CENTER); 
marker.setLabelOffsetType(LengthAdjustmentType.CONTRACT); 
plot.addDomainMarker(marker, Layer.BACKGROUND); 

Bar Chart With CategoryMarker

我無法工作,如何建立一座耗資-CategoryMarker但是你可以通過 創造的東西similer調整ItemMarginCategoryMargin以及額外的CategoryMarkers

{ 
    CategoryMarker marker = new CategoryMarker("Category 2"); 
    marker.setLabel("Band X"); 
    marker.setLabelAnchor(RectangleAnchor.TOP); 
    marker.setLabelTextAnchor(TextAnchor.TOP_CENTER); 
    marker.setLabelOffsetType(LengthAdjustmentType.CONTRACT); 
    plot.addDomainMarker(marker, Layer.BACKGROUND); 
    } 
    { 
    CategoryMarker marker = new CategoryMarker("Category 3"); 
    plot.addDomainMarker(marker, Layer.BACKGROUND); 
    } 
    renderer.setItemMargin(0.0); 
    CategoryAxis axis = plot.getDomainAxis(); 
    axis.setCategoryMargin(0); 
} 

enter image description here

您可以創建添加多個標記e.g

private void addMarkers(List<Comparable> keys){ 
... 

更正確的解決方案可能是寫自己的實現渲染器的方法和accociated代碼

+0

謝謝您的回答!是的,我的樂隊對應一組類別......比方說樂隊#1 = {category1 .... category4},band#2 = {category5 ..... category8}等等。我明白,通過擴展此解決方案,我可以爲每個類別單獨添加一個類別標記,但可以定義一組與頻段相對應的類別? – Sujay 2012-07-09 13:48:35

+0

@Sujay我已經用部分解決方案更新了我的答案 – GrahamA 2012-07-10 08:15:30

+0

我想我明白了。感謝有用的指針。 – Sujay 2012-07-10 14:59:13