2012-11-29 32 views
2

通過使用StandardCategoryItemLabelGenerator()Iam能夠顯示一個欄上的精確範圍軸值,現在我的問題是我不想顯示範圍軸值,而是我想顯示該欄的其他值我如何實現這一目標?如何使用jfree圖表在條形圖中的條形圖上顯示自定義值?

for (String IDS : idMap.keySet()) { 
    List<String> listValues = idMap.get(IDS); 
    if(listValues != null && listValues.get(1) != null) { 
     dataSet.setValue(Double.valueOf(listValues.get(1)), "", IDS); 
    } 
} 
JFreeChart chart = ChartFactory.createBarChart3D("", "", "Time taken ", dataSet,PlotOrientation.VERTICAL, true, true, false); 
chart.setTitle(new org.jfree.chart.title.TextTitle("Time Duration",new java.awt.Font("SansSerif", java.awt.Font.BOLD, 10))); 
chart.getLegend().setItemFont(new java.awt.Font("SansSerif",0,7)); 
chart.removeLegend(); 
final CategoryPlot plot = chart.getCategoryPlot(); 
plot.setNoDataMessage("No data available"); 
final CategoryItemRenderer renderer = plot.getRenderer(); 
renderer.setItemLabelsVisible(true); 
final BarRenderer r = (BarRenderer) renderer; 
r.setMaximumBarWidth(0.05); 
r.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); 
r.setBaseItemLabelsVisible(true); 
r.setSeriesItemLabelFont(0, new java.awt.Font("Times New Roman",Font.NORMAL,7)); 
r.setSeriesPositiveItemLabelPosition(0,  
        new ItemLabelPosition(ItemLabelAnchor.OUTSIDE3, TextAnchor.BOTTOM_LEFT, TextAnchor.BOTTOM_LEFT, -Math.PI/2)); 
final ValueAxis rangeAxis = plot.getRangeAxis(); 
rangeAxis.setLabelFont(new java.awt.Font("SansSerif", java.awt.Font.BOLD, 8)); 
final CategoryAxis axis = plot.getDomainAxis(); 
axis.setLabel("ids"); 
axis.setLabelFont(new java.awt.Font("SansSerif", java.awt.Font.BOLD, 8)); 
axis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(Math.PI/8.0)); 
axis.setTickLabelFont(new java.awt.Font("SansSerif", java.awt.Font.BOLD, 6)); 
plot.setDomainGridlinesVisible(true); 
plot.setRangeGridlinesVisible(true); 

通過使用上述代碼亞姆能夠棒上顯示確切範圍軸值,但我不想要的範圍軸值我需要一些其它值listValues.get(2)要被顯示的條上如何我能做到嗎?

回答

7

StandardCategoryItemLabelGenerator使用的MessgeFormat這個實例,默認爲ArgumentIndex{2}。其他參數索引值爲抽象父項中的defined。例如,

renderer.setBaseItemLabelGenerator(
    new StandardCategoryItemLabelGenerator(
     "{0} {1} {2} {3}", NumberFormat.getInstance())); 
renderer.setBaseItemLabelsVisible(true); 

您也可以覆蓋generateLabel()以返回所需的任何值。

+0

請修改您的問題,以包含修改後的代碼作爲[sscce](http://sscce.org/),它表現出您描述的問題。 – trashgod

+0

對上述評論感到抱歉。實際上,generateLabelString()接受數據集,行,列作爲參數,如何在列上傳遞listValues.get(2)以顯示listValues.get(2)。 – satish

+0

您可以將地圖作爲參數傳遞給您的生成器的構造函數,並查找第二個值。 – trashgod

3
renderer.setBaseItemLabelGenerator(
new StandardCategoryItemLabelGenerator() 
@Override 
public String generateLabel(CategoryDataset dataset, int row, int column) { 
     return "Your Text" +row+","+column; 
} 
); 
相關問題