2016-11-23 1 views
0

두 개의 계열 (계열은 동일한 도메인/x 값을 갖지만 범위/y 값은 완전히 다릅니다)을 사용하여 XYPlot을 만들 수 있습니까? 내 말은, 첫 번째 시리즈는 왼쪽 범위 축에 자체 축척이 있고 두 번째 축은 오른쪽 축에 자체 축척이 있음을 의미합니다.이중 축 레이블

답변

0

편집 : 1.3.1부터 NormallyXYSeries가 추가되어 듀얼 스케일 구현이 조금 더 간단 해졌습니다. DualScaleActivity in the DemoApp은 전체 예제를 제공합니다.

1.x 이상부터 Androidplot에서 가능합니다. f(x) example은 어떻게 완료되었는지에 대한 기본적인 예를 제공합니다.

중요한 두 가지 요소는 눈금 레이블을 생성하기 위해 사용자 지정 LineLabelRenderer를 만드는 것입니다. 이 제공된 예는 착색 및 눈금 간격을 지정하는 데 사용됩니다 :

다음
/** 
    * Draws every other tick label and renders text in gray instead of white. 
    */ 
    class MySecondaryLabelRenderer extends MyLineLabelRenderer { 


     @Override 
     public void drawLabel(Canvas canvas, XYGraphWidget.LineLabelStyle style, 
       Number val, float x, float y, boolean isOrigin) { 
      if(val.doubleValue() % 2 == 0) { 
       final Paint paint = style.getPaint(); 
       if(!isOrigin) { 
        paint.setColor(Color.GRAY); 
       } 
       super.drawLabel(canvas, style, val, x, y, isOrigin); 
      } 
     } 
    } 

플롯의 가장자리 중 하나에 정의 LineLabelRenderer를 첨부 첨부해야합니다 : 당신이 필요가없는 경우

plot.getGraph().setLineLabelRenderer(XYGraphWidget.Edge.RIGHT, new MySecondaryLabelRenderer()); 

어떤 화려한 색상, 당신은 또한 단지 사용자 정의 포맷터를 설정할 수 있습니다

 plot.getGraph().getLineLabelStyle(XYGraphWidget.Edge.RIGHT).setFormat(new Format() { 
      @Override 
      public StringBuffer format(Object seriesVal, StringBuffer stringBuffer, 
        FieldPosition fieldPosition) { 

       // do whatever you need to do here. 
       stringBuffer.append(((Number) seriesVal).doubleValue() + "bla"); 
       return stringBuffer; 
      } 

      @Override 
      public Object parseObject(String s, ParsePosition parsePosition) { 
       // nothing to do here 
       return null; 
      } 
     }); 

이 당신에게 정확하게 표시 듀얼 규모를 제공하지만,이 명 규모가 얼마나 다른, 당신은 일에 따라한다 시리즈 중 하나가 축소되거나 적어도 이상적인 크기로되지 않도록 감습니다.

이 새로운 문제를 해결하는 가장 좋은 방법은 모든 계열 데이터를 0과 1 사이의 범위로 정규화 한 다음 정규화 된 값을 사용자 지정 포맷터의 원래 값으로 다시 확장하는 것입니다.

+0

은 DualScaleActivity 예제 및 NormedXYSeries 편리한 클래스를 포함하도록 내 대답을 업데이트했습니다. – Nick