2014-04-03 51 views
0

我有一個簡單的XYSeries線圖有2個問題。我有2個Achartengine XYSeries問題

  1. 當最後繪製的點和下一繪製的點之差的絕對值小於11的下一個繪製的點的標籤去錯過。我想要顯示所有標籤。

  2. 我有一些(不是全部)缺少垂直網格線,並不明白爲什麼。我想要一個垂直網格線爲每個XY座標。

感謝您的幫助。這是代碼。

String glucoseLegendText = getString(R.string.glucose_legend_text); 
     XYSeries series = new XYSeries(glucoseLegendText); 

     datasource = new HistoryDataSource(this); 
     datasource.open(); 
     Cursor c = datasource.getQuery(); 
     c.moveToFirst(); 
     int cnt = c.getCount(); 
     int minValue = 0; 
     int maxValue = 0; 

     for (int i = 0; i < cnt; i++) { 
      int glucoseValue = c.getInt(2); 
      series.add(i, glucoseValue); 
      if (i == 0 || glucoseValue < minValue) 
       minValue = glucoseValue; 
      if (glucoseValue > maxValue) 
       maxValue = glucoseValue; 
      c.moveToNext(); 
     } 
     datasource.close(); 

     XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); 
     dataset.addSeries(series); 

     XYSeriesRenderer renderer = new XYSeriesRenderer(); 
     renderer.setColor(Color.BLUE); 
     renderer.setPointStyle(PointStyle.CIRCLE); 
     renderer.setFillPoints(true); 
     renderer.setLineWidth(3); 
     renderer.setDisplayChartValues(true); 
     renderer.setChartValuesTextSize(15); 
     renderer.setChartValuesTextAlign(Align.LEFT); 

XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer(); 
     mRenderer.addSeriesRenderer(renderer); 
     mRenderer.setShowGrid(true); 
     mRenderer.setGridColor(Color.BLACK); 
     mRenderer.setXLabels(cnt); // to control number of grid lines 
     mRenderer.setYLabels(cnt); // to control number of grid lines 
     mRenderer.setXLabelsColor(Color.YELLOW); 
     mRenderer.setPointSize(5); 
     mRenderer.setYLabelsAlign(Align.RIGHT); 
     mRenderer.setLegendTextSize(15); 
     mRenderer.setZoomButtonsVisible(true); 
     mRenderer.setYAxisMin(minValue - 2); // buffer bottom 
     mRenderer.setYAxisMax(maxValue + 3); // buffer top 

     // Populate the X labels with the dates and times 
     c.moveToFirst(); 
     for (int d = 0; d < cnt; d++) { 
      timeStamp = c.getString(1); 
      date = timeStamp.substring(0, 5); 
      time = timeStamp.substring(9, 14); 
      if (date.equals(dateLast)) { 
       mRenderer.addXTextLabel(d, "\n" + time); 
      } else 
       mRenderer.addXTextLabel(d, "\n" + time + "\n" + date); 

      dateLast = date; 
      c.moveToNext(); 
     } 

     c.close(); 

     GraphicalView gview = ChartFactory.getTimeChartView(this, dataset, 
       mRenderer, ""); 

     LinearLayout layout = (LinearLayout) findViewById(R.id.Chart); 
     layout.addView(gview); 

回答

0

對於第一個問題,可以控制使用

renderer.setXLabels(approximateNumberOfLabels); 

對於第二個問題的標籤顯示,網格線沿着標籤顯示。

+0

感謝您試用Dan,但XYSeriesRenderer渲染器沒有setXlabels方法,您可以在代碼中看到我已經在使用XYMultipleSeriesRenderer mRenderer.setXlabels(cnt)對我的問題沒有影響。注意:在我的代碼中,approximateNumberOfLabels = cnt。 –

+0

花了一個月才得出這個結論。 –

+0

有點偏離主題,但由於某種原因,我的計算器電子郵件通知無法正常工作,而我剛剛開始查看您的答案。正如我所說,無論如何,當然,如果有人提出可行的解決方案,我會非常感興趣。 –