2011-08-30 58 views
3


我有一個跟隨從JFreeChart(StackedBarChartDemo5)演示爲了創建一個劇情讓我使用GroupedStackedBarRenderer如何在JFreeChart中使用GroupedStackedBarRenderer時旋轉組標籤?

基本上,我爲每個電臺(代表一個酒吧中的一個堆棧),連接到一個收音機(代表一個酒吧在圖中),爲接收和發送(RX和TX)繪製空中時間。
情節看起來是這樣的: enter image description here

有兩類(RX和TX)和若干組(收音機)。正如你所看到的,目前,無線電MAC是不可讀的。 我想旋轉這些標籤,以便使情節更清晰。
我已經使用了下面的代碼段,以嘗試並旋轉標籤:subCategoryAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(Math.PI/4));
這僅旋轉的類別標籤(RX和TX),而不是組的標籤(無線電MACS): enter image description here

我也嘗試了其他幾種方法,所有這些方法都導致無處...我如何旋轉這些子標籤?

這裏是我用來填充有標籤的底層代碼:

SubCategoryAxis subCategoryAxis = new SubCategoryAxis("Radio MACs (separate Rx and Tx plots)"); 
subCategoryAxis.setCategoryMargin(0.05D); 

    // subCategoryAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(Math.PI/4)); 

    KeyToGroupMap keyToGroupMap = null; 
    final Set<String> radios = Sets.newHashSet(); 
    for (Entry<XRadio, Triplet<XStation, Double, Double>> entryMap: channelTimes.entries()) { 
     final String radioMac = entryMap.getKey().getMac(); 
     if (keyToGroupMap == null) 
      keyToGroupMap = new KeyToGroupMap(radioMac); 

     if (!radios.contains(radioMac)) { 
      subCategoryAxis.addSubCategory(radioMac); 
      radios.add(radioMac); 
     } 

     final Triplet<XStation, Double, Double> chTriplet = entryMap.getValue();       
     final String seriesKey = radioMac + ":" + chTriplet.a.getMac(); 
     keyToGroupMap.mapKeyToGroup(seriesKey, radioMac);         
     model.getDataset().addValue(chTriplet.b, seriesKey, "Rx"); 
     model.getDataset().addValue(chTriplet.c, seriesKey, "Tx"); 
    } 

    if (keyToGroupMap == null) 
     return; 

    groupedStackedBarRenderer.setSeriesToGroupMap(keyToGroupMap);     
    groupedStackedBarRenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());  
    groupedStackedBarRenderer.setBaseItemLabelsVisible(true);      
    groupedStackedBarRenderer.setItemMargin(0.1D); // 10 % 
    groupedStackedBarRenderer.getPlot().setDomainAxis(subCategoryAxis); 
+1

您可以使用[如何在JFreeChart中的數字軸的域上旋轉刻度標記標籤?]中顯示的方法之一(http://stackoverflow.com/questions/7071057/how-do -i-旋轉蜱標記標籤 - 上的域對的一數軸在-jfreechart的)。 – trashgod

回答

-1

您可以在弧度上CategoryAxis旋轉:

subCategoryAxis.setLabelAngle(-Math.PI/2);

編輯: 看起來SubCategoryAxis忽略子標籤的旋轉。

SubCategoryAxis#drawSubCategoryLabels方法中,撥打電話TextUtilities.drawRotatedString()angle=0

注:示例來自1.13。

正確的解決方案是製作一個修補程序來修復問題並將修補程序提交給開發人員。

至於爲你的情況進行修復,你可以擴展SubCategoryAxis並以正確的角度調用TextUtilities.drawRotatedString()

+0

我已經試過這個,但是這一切都是旋轉軸的描述標籤(它旋轉「Radio MACs(單獨的RX和TX圖)」 – StormLV