2012-11-30 35 views
0

我使用achartengine來及時可視化一些數據。 TimeChart和TimeSeries的使用是完美的,但我希望以下結果目前看起來不可能。在achartengine中爲x軸使用特殊日期格式

目前我使用的是這樣的:

GraphicalView view = ChartFactory.getTimeChartView(this, dataset, renderer, "MMM"); 

這將導致以下X軸的輸出:

nov.   apr.  aug. 

但我想每個月的標誌,只在第一個字符月,像這樣:

N D J F M A M J J A S O 

想法如何做到這一點?謝謝!

+1

你嘗試過「M」嗎? – njzk2

+0

是的,這給出了月份編號。 –

回答

1

我已經找到了自己的解決方案,我重寫了自定義TimeChart類中的drawXLabels方法。

private class CustomTimeChart extends TimeChart { 

     public CustomTimeChart(XYMultipleSeriesDataset dataset, 
       XYMultipleSeriesRenderer renderer) { 
      super(dataset, renderer); 
     } 

     @Override 
     protected void drawXLabels(List<Double> xLabels, 
       Double[] xTextLabelLocations, Canvas canvas, Paint paint, 
       int left, int top, int bottom, double xPixelsPerUnit, 
       double minX, double maxX) { 

      int length = xLabels.size(); 
      if (length > 0) { 
       boolean showLabels = mRenderer.isShowLabels(); 
       boolean showGridY = mRenderer.isShowGridY(); 
       DateFormat format = new SimpleDateFormat("MMMM"); 
       for (int i = 0; i < length; i++) { 
        long label = Math.round(xLabels.get(i)); 
        float xLabel = (float) (left + xPixelsPerUnit 
          * (label - minX)); 
        if (showLabels) { 
         paint.setColor(mRenderer.getXLabelsColor()); 
         canvas.drawLine(xLabel, bottom, xLabel, bottom 
           + mRenderer.getLabelsTextSize()/3, paint); 
         drawText(canvas, format.format(new Date(label)).substring(0, 1).toUpperCase(Locale.getDefault()), 
           xLabel, bottom + mRenderer.getLabelsTextSize() 
             * 4/3, paint, 
           mRenderer.getXLabelsAngle()); 
        } 
        if (showGridY) { 
         paint.setColor(mRenderer.getGridColor()); 
         canvas.drawLine(xLabel, bottom, xLabel, top, paint); 
        } 
       } 
      } 
      drawXTextLabels(xTextLabelLocations, canvas, paint, true, left, 
        top, bottom, xPixelsPerUnit, minX, maxX); 
     } 

還要確保使用setXLabels(int i)以對XYMultipleSeriesRenderer實例來設置你想要多少個月,顯示在x軸上。

+0

:你好,你能幫我請這個嗎? http://stackoverflow.com/questions/16014103/achartengine-cant-figure-how-to-use-dates-as-x-axis-the-file-i-save-is-empt。謝謝! – George

+0

:抱歉再次打擾,如果你能幫助我與上述我會感激。 – George