저는 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- 축에 설정하는 함수가 있습니까?
도움 주셔서 감사합니다.
감사 답변을 사용하여 투명하게 확장 변경할 수 있지만,이 방법은 이미했습니다. 다음 이미지에서 볼 수 있듯이 겹치는 부분이 아직 남아 있습니다. http://postimage.org/image/bxywmw8q3/ – iTamp
AChartEngine은 내가 언급 한 것 이외의 중복 방지 기능을 제공하지 않습니다. –
다른 라이브러리에서 처리 할 수 있는지 알고 계십니까? 난 그냥 GrapView 시도했지만 그들은 여러 y- 축을 지원하지 않는다. – iTamp