2014-03-07 35 views
-1

我需要在圖表中設置最小X-tick間隔。我有一個包含1000個條目的數據集,即<0,12>,<5,22>,<10,23>,...,<1000,20>。在數據集,X值之間的間隔是等於5。在我想設置X-蜱間隔等於100JFreeChart:在圖表中設置最小X-tick間隔

我使用此代碼圖表,但它不工作:

NumberAxis range = (NumberAxis)plot.getRangeAxis(); 
    range.setTickUnit(new NumberTickUnit(100)); 

這裏是我的代碼片段:

private JFreeChart createChart(CategoryDataset dataset) 
    { 

     final JFreeChart chart = ChartFactory.createAreaChart(
      this.title, 
      "Time", 
      "Net demand", 
      dataset, 
      PlotOrientation.VERTICAL, 
      true, 
      true, 
      false 
     ); 

     Title t = new TextTitle(this.subtitle); 
     chart.addSubtitle(t); 

     int transparency = 95; 
     Color c = new Color(1, 158, 115, transparency); 
     final CategoryPlot plot = chart.getCategoryPlot(); 
     CategoryItemRenderer renderer = new CustomRenderer(c); 
     renderer.setSeriesOutlinePaint(0, Color.black); 
     renderer.setSeriesOutlineStroke(0, new BasicStroke(0.5f)); 
     renderer.setSeriesPaint(0,c); 
     plot.setRenderer(renderer); 

     NumberAxis range = (NumberAxis)plot.getRangeAxis(); 
     range.setTickUnit(new NumberTickUnit(60)); 

     return chart;  
    } 

回答

4

你已經設置刻度單位範圍內的軸,這在JFreeChart的y軸。對於x軸,您需要域軸。

NumberAxis xAxis = (NumberAxis) plot.getDomainAxis(); 
xAxis.setTickUnit(new NumberTickUnit(60)); 

範圍術語來自映射一組域值的一組範圍內的值的函數。事後看來,爲方法名使用getXAxis()和getYAxis()對大多數人來說會更加清晰......對於JFreeChart 2我可能會改變它。

+0

謝謝。在這種情況下,我收到編譯錯誤:無法從CategoryAxis投射到NumberAxis –

+0

是否需要在NumberAxis中重寫refreshTicks()? –

+0

不,我沒有注意到你正在使用CategoryPlot,我認爲它是一個XYPlot。由於您的x值是數字,您應該嘗試使用XYAreaChart。 –