2013-11-28 3 views
1

im использование диаграммы jfree в моем приложении. Для моего приложения мне нужно отметить только первое и последнее значение оси x, а также отметку. Я попыталсякак установить первую и последнюю галочку и значение оси x в диаграмме jfree по оси x

String Male1 = "First"; 
     String Male2 = "sec"; 
     String Female1 = "0-4"; 
     String Female2 = "5-18"; 
     String Female3 = "19-45"; 
     String Female4 = "46-64"; 
     String Female5 = "65+"; 
     DefaultCategoryDataset dataset = new DefaultCategoryDataset(); 
     dataset.addValue(202, Male1, Female1); 
     dataset.addValue(130, Male2, Female1); 
     dataset.addValue(216, Male1, Female2); 
     dataset.addValue(0, Male2, Female2); 
     dataset.addValue(248, Male1, Female3); 
     dataset.addValue(458, Male2, Female3); 
     dataset.addValue(517, Male1, Female4); 
     dataset.addValue(623, Male2, Female4); 
     dataset.addValue(1481, Male1, Female5); 
     dataset.addValue(680, Male2, Female5);   
     final JFreeChart chart = ChartFactory.createBarChart(
       "", "", "", dataset, 
       PlotOrientation.HORIZONTAL, true, true, false); 
     CategoryPlot plot = chart.getCategoryPlot(); 
     plot.setBackgroundPaint(Color.WHITE); 
     plot.setOutlineVisible(false); 
     plot.setRangeGridlinesVisible(false); 
     plot.setRangeGridlineStroke(new BasicStroke(0.2f)); 
     plot.setAxisOffset(RectangleInsets.ZERO_INSETS);   

     NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); 
     rangeAxis.setAxisLinePaint(Color.decode("#C1C1C1")); 
     rangeAxis.setAxisLineVisible(true); 
     rangeAxis.setTickMarksVisible(false); 
     rangeAxis.setTickMarkOutsideLength(0f); 

     final CategoryAxis categoryAxis = (CategoryAxis) plot.getDomainAxis(); 
     categoryAxis.setTickMarksVisible(false); 
     categoryAxis.setAxisLineVisible(false); 
     BarRenderer br = new BarRenderer(); 
     br.setItemMargin(0.03); 
     br.setShadowVisible(false); 
     br.setBarPainter(new StandardBarPainter()); 
     br.setSeriesPaint(0, Color.decode("#999999")); 
     br.setSeriesPaint(1, Color.decode("#CCCCCC"));   

     chart.getCategoryPlot().setRenderer(br); 
     chart.removeLegend(); 
     try { 
      ChartUtilities.saveChartAsPNG(new File("/media/hari/668ea9a3-d26c-4896-a2f0-756dfb532756/jfreeBarchart.png"), chart, 280, 180); 
      System.out.println("=====Bar chart====="); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

Для приведенного выше кода им получать

enter image description here

Но мой ожидание является

enter image description here

Пожалуйста, помогите мне чтобы получить ожидаемую диаграмму в диаграмме jfree.

ответ

0

Если я правильно понял, вы хотите отобразить только два тика (0 и 1500) и добавить заметный знак галочки к обоим.

Чтобы отобразить только два тика, вы можете позвонить setTickUnit с соответствующим аргументом размера. Этот размер будет использоваться объектом оси для создания видимых тиков.

Чтобы добавить отметки на внутренней стороне, вы можете позвонить setTickMarkInsideLength.

Так Добавив эти три строки должны сделать трюк:

rangeAxis.setTickUnit(new NumberTickUnit(1500)); 
rangeAxis.setTickMarksVisible(true); 
rangeAxis.setTickMarkInsideLength(3f); 
Смежные вопросы