2012-11-14 4 views
1

저는 AChartEngine을 라이브러리로 사용하여 선형 차트를 그립니다. 이 선형 차트는 다중 Y 축 (3-5 축)으로 구성되어 있으며 X 축의 타임 라인으로 이동합니다. AChartEngine 여러 Y 축 겹침 값

//Puls, Geschwindigkeit und Hoehenmeter dem Diagramm hinzufugen 
     HashMap<Long, Heartrate> heartrateMap = trainingLog.getHeartrateList(); 
     HashMap<Long, GPS> gpsMap = trainingLog.getGpsList(); 
     //Puls, Geschwindigkeit und Hoehenmeter dem Diagramm hinzufugen 
     XYSeries heartrateSeries = new XYSeries("Puls", 0); 
     XYSeries altitudeSeries = new XYSeries("Höhenmeter", 1); 
     XYSeries speedSeries = new XYSeries("Geschwindigkeit", 2); 

     for(int i=0; i<trainingLog.getDuration(); i++){ 
      Heartrate heartrate = heartrateMap.get(Long.valueOf(i)); 
      if(heartrate != null){ 
       heartrateSeries.add(i, heartrate.getHeartrate()); 
      } 

      GPS gps = gpsMap.get(Long.valueOf(i)); 
      if(gps != null){ 
       altitudeSeries.add(i, gps.getAltitude()); 
       speedSeries.add(i, gps.getSpeed()); 
      } 
     } 

     XYMultipleSeriesDataset dataSet = new XYMultipleSeriesDataset(); 
     dataSet.addSeries(0, heartrateSeries); 
     dataSet.addSeries(1, altitudeSeries); 
     dataSet.addSeries(2, speedSeries); 

     XYMultipleSeriesRenderer multiRenderer = new XYMultipleSeriesRenderer(3); 

     //Renderer fuer Pulswerte 
     XYSeriesRenderer rendererHeartrate = new XYSeriesRenderer(); 
     rendererHeartrate.setColor(Color.RED); 
     multiRenderer.addSeriesRenderer(rendererHeartrate); 
     //Renderer fuer Hoehenmeter 
     XYSeriesRenderer rendererAltitude = new XYSeriesRenderer(); 
     rendererAltitude.setColor(Color.BLUE); 
     multiRenderer.addSeriesRenderer(rendererAltitude); 
     //Renderer fuer Geschwindigkeit 
     XYSeriesRenderer rendererSpeed = new XYSeriesRenderer(); 
     rendererSpeed.setColor(Color.DKGRAY); 
     multiRenderer.addSeriesRenderer(rendererSpeed); 

     //Hintergrundfarbe weiß setzen 
     multiRenderer.setApplyBackgroundColor(true); 
     multiRenderer.setBackgroundColor(Color.WHITE); 
     multiRenderer.setMarginsColor(Color.argb(0x00, 0x01, 0x01, 0x01)); 

     //Label--Einstellungen 
     multiRenderer.setYLabelsColor(0, Color.RED); 
     multiRenderer.setYLabelsColor(1, Color.BLUE); 
     multiRenderer.setYLabelsColor(2, Color.DKGRAY); 
     multiRenderer.setLabelsTextSize(25); 

     int length = multiRenderer.getSeriesRendererCount(); 
     for (int i = 0; i < length; i++) { 
      XYSeriesRenderer r = (XYSeriesRenderer) multiRenderer.getSeriesRendererAt(i); 
      r.setLineWidth(2f); 
     } 

     //Legenden-Einstellungen 
     multiRenderer.setLegendTextSize(20); 

     multiRenderer.setMargins(new int[] {20, 20, 20, 20}); 

     Looper.prepare(); 
     graphicalView = ChartFactory.getLineChartView(getActivity(), dataSet, multiRenderer); 

사람이이 문제를 해결하는 방법을 알고 있나요

:

내 문제는

Heres는 내 코드 (이미지 참조) Y 축 - 값이 중복되어 있는지, 무엇입니까? 가장 좋은 방법은 y- 레이블을 서로 평행하게 설정하는 것이지만이를 수행하는 방법을 찾지 못했습니다. 또는 각 y- 레이블의 여백을 y- 축에 설정하는 함수가 있습니까?

도움 주셔서 감사합니다.

enter image description here

답변

2

당신은 당신의 Y 축 레이블에 대한 다른 정렬을 설정할 수 있습니다. 예를 들어, 첫 번째 시리즈는 레이블을 왼쪽에, 두 번째 레이블을 오른쪽에, 세 번째 레이블을 가운데에 맞 춥니 다.

multiRenderer.setYLabelsAlign(Align.LEFT, 0); 
multiRenderer.setYLabelsAlign(Align.RIGHT, 1); 
multiRenderer.setYLabelsAlign(Align.CENTER, 2); 
+0

감사 답변을 사용하여 투명하게 확장 변경할 수 있지만,이 방법은 이미했습니다. 다음 이미지에서 볼 수 있듯이 겹치는 부분이 아직 남아 있습니다. http://postimage.org/image/bxywmw8q3/ – iTamp

+0

AChartEngine은 내가 언급 한 것 이외의 중복 방지 기능을 제공하지 않습니다. –

+0

다른 라이브러리에서 처리 할 수 ​​있는지 알고 계십니까? 난 그냥 GrapView 시도했지만 그들은 여러 y- 축을 지원하지 않는다. – iTamp

0

사용 된 3 가지 축척에 대한 y 축 최소값과 최대 값을 설정하십시오.

는 두 개의 Y의 색이 Color.argb에게