2014-01-31 1 views
2

1. 내 막 대형 차트에는 하나의 세리에가 있습니다.androidplot 막대 차트에서 막대의 다른 색상을 칠하는 방법은 무엇입니까?

2. 인디에는 10 값이 있습니다.

3.When 차트는 그것의 10 바가 표시되어 있지만 모든 막대 바의 다른 색을 칠하기 위해 같은 색

4.How입니까? 난

이 작업을 수행하려고하지만

class MyBarRenderer extends BarRenderer<MyBarFormatter> { 
    public MyBarRenderer(XYPlot plot) { 
     super(plot); 
    } 

    protected BarFormatter getFormatter(int index, XYSeries series) { 
     //return getFormatter(series); 
     if(index % 2 == 1) { 
      return new MyBarFormatter(Color.BLUE, Color.TRANSPARENT); 
     } else { 
      return new MyBarFormatter(Color.RED, Color.TRANSPARENT); 
     } 
    } 
} 

답변

2

내 코드가 당신 거의 동일 보인다 작동하지, 그리고 나를 위해 일했다.

class MyBarFormatter extends BarFormatter 
{ 
    public MyBarFormatter(int fillColor, int borderColor) 
    { 
     super(fillColor, borderColor); 
    } 

    @Override public Class<? extends SeriesRenderer> getRendererClass() 
    { 
     return MyBarRenderer.class; 
    } 

    @Override public SeriesRenderer getRendererInstance(XYPlot plot) 
    { 
     return new MyBarRenderer(plot); 
    } 
} 

class MyBarRenderer extends BarRenderer<MyBarFormatter> 
{ 
    public MyBarRenderer(XYPlot plot) 
    { 
     super(plot); 
    } 

    public MyBarFormatter getFormatter(int index, XYSeries series) 
    { 
     // return getFormatter(series); 
     if(index % 2 == 1) 
     { 
      return new MyBarFormatter(Color.BLUE, Color.TRANSPARENT); 
     } 
     else 
     { 
      return new MyBarFormatter(Color.RED, Color.TRANSPARENT); 
     } 
    } 
} 

내가 다음 코드를 호출,이 두 클래스를 사용하려면 :

: 여기

// Create an array of y-values to plot: 
Number[] values = { 380, 1433, 1965, 3200, 3651, 3215, 3217, 1000, 500, 4300, 3000, 2100 }; 

// Turn the above array into XYSeries': 
XYSeries series1 = new SimpleXYSeries(Arrays.asList(values), SimpleXYSeries.ArrayFormat.Y_VALS_ONLY, "Series1"); 

// Add a new series to the xyplot: 
MyBarFormatter formatter1 = new MyBarFormatter(Color.argb(200, 100, 150, 100), Color.LTGRAY); 
mySimpleXYPlot.addSeries(series1, formatter1); 

// Give each bar a fixed width 
MyBarRenderer renderer = ((MyBarRenderer) mySimpleXYPlot.getRenderer(MyBarRenderer.class)); 
renderer.setBarWidthStyle(BarRenderer.BarWidthStyle.FIXED_WIDTH); 
renderer.setBarWidth(50); 

을이 2 개 가지 색상을 번갈아 생겼는지 여기에 내 코드의 나머지 부분입니다

012,380,203 : 또한

enter image description here는 점선 수평 라인을 추가

+0

2000- 2500 범위 사이에 어떻게 수평선을 그렸습니까? –

+1

@ManuelLopera 방금 내 대답의 맨 아래에 코드를 추가했습니다. – Luke