2017-02-05 2 views
2

В DefaultIntervalCategoryDataset, я хочу отобразить информацию о диапазоне интервалов внутри панели. Я хочу удалить информацию, указанную на следующем рисунке, и просто хочу отобразить значение интервала.IntervalBarRenderer: Отображение определенной информации внутри панели

image

Ниже приведен код. Как отображать только интервальные значения?

public class IntervalBarChartTest0 extends ApplicationFrame { 
    public IntervalBarChartTest0(String title) { 
     super(title); 
     JPanel chartPanel = createDemoPanel(); 
     chartPanel.setPreferredSize(new Dimension(500, 270)); 
     setContentPane(chartPanel); 
    } 
    private static DefaultIntervalCategoryDataset createDataset1() { 

     Number[] series1_Start = new Number[] {25,50}; 
     Number[] series1_End = new Number[] {50,75}; 
     Number[][] starts = new Number[][]{series1_Start}; 
     Number[][] ends = new Number[][] {series1_End}; 
     String[] categoryKeys = {"50th%ile", "90th%ile"}; 
     String[] seriesKeys = {"Series1"}; 
     DefaultIntervalCategoryDataset dataset= new DefaultIntervalCategoryDataset(seriesKeys,categoryKeys,starts, ends); 
     return dataset; 
    } 

    private static JFreeChart createChart(DefaultIntervalCategoryDataset dataset) { 

     CategoryAxis domainAxis = new CategoryAxis("Percentiles"); 

     NumberAxis rangeAxis = new NumberAxis("ms1"); 
     IntervalBarRenderer renderer = new IntervalBarRenderer(); 
     rendererSettings(renderer); 
     CategoryPlot plot = new CategoryPlot(dataset, domainAxis, rangeAxis,renderer); 
     JFreeChart chart = new JFreeChart("Percentiles", plot); 
     ChartUtilities.applyCurrentTheme(chart); 
     return chart; 
    } 
    private static void rendererSettings(IntervalBarRenderer renderer){ 
     renderer.setItemLabelFont(new Font("Verdana",Font.PLAIN,8)); 
     renderer.setBaseItemLabelGenerator(new IntervalCategoryItemLabelGenerator()); 
     renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.INSIDE6, TextAnchor.BOTTOM_CENTER)); 
     renderer.setItemMargin(0.1); 
     renderer.setBaseItemLabelsVisible(true);  

    } 
    public static JPanel createDemoPanel() { 
     JFreeChart chart = createChart(createDataset1()); 
     return new ChartPanel(chart); 
    } 

    public static void main(String[] args) { 
     JFrame demo = new IntervalBarChartTest0(
       "Testing"); 
     demo.pack(); 
     RefineryUtilities.centerFrameOnScreen(demo); 
     demo.setVisible(true); 
    } 

} 

ответ

3

Это функция по умолчанию IntervalCategoryItemLabelGenerator. DEFAULT_LABEL_FORMAT_STRING определяет следующие MesageFormat значения:

`"({0}, {1}) = {3} - {4}"` 

Значения определяются createItemArray(). Вместо того, чтобы по умолчанию, вы, вероятно, хотите что-то вроде этого:

renderer.setBaseItemLabelGenerator(
    new IntervalCategoryItemLabelGenerator(
     "{2}", NumberFormat.getNumberInstance())); 

image

Смежные вопросы