2015-04-26 162 views
2

我使用achartengine绘制条形图,并且我想根据y轴的值为每个条形图添加不同的颜色,如果值> 100,颜色=红色Achartengine,为条形图中的酒吧设置不同的颜色

所以我的图表看起来有点像这样。

enter image description here

那么,是不是可以用achartengine实现这一目标?

问候。

编辑:这是我的代码,到目前为止,

public class GraphActivity extends Activity { 

LinearLayout chart; 
private View mChart; 
private static final int SERIES_NR = 2; 
int[] income = {102, 95, 97, 100, 92, 99, 88}; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_graph); 
    chart = (LinearLayout) findViewById(R.id.chart); 

    XYMultipleSeriesRenderer renderer = getTruitonBarRenderer(); 
    myChartSettings(renderer); 
    mChart = ChartFactory.getBarChartView(this, getTruitonBarDataset(), renderer, BarChart.Type.DEFAULT); 
    chart.addView(mChart); 
} 

private XYMultipleSeriesDataset getTruitonBarDataset() { 
    XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); 
    final int nr = 4; 
    Random r = new Random(); 
    int[] x = { 0,1,2,3,4,5,6}; 
    CategorySeries series = new CategorySeries("INCOME"); 
    for(int i=0;i<x.length;i++){ 
     series.add(income[i]); 
    } 
    dataset.addSeries(series.toXYSeries()); 
    return dataset; 
} 

public XYMultipleSeriesRenderer getTruitonBarRenderer() { 
    XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); 
    renderer.setAxisTitleTextSize(50); 
    renderer.setChartTitleTextSize(20); 
    renderer.setLabelsTextSize(25); 
    renderer.setLegendTextSize(15); 
    SimpleSeriesRenderer r = new SimpleSeriesRenderer(); 
    r.setColor(Color.BLUE); 
    renderer.addSeriesRenderer(r); 
    return renderer; 
} 

private void myChartSettings(XYMultipleSeriesRenderer renderer) { 
    renderer.setXAxisMin(0.8); 
    renderer.setXAxisMax(7.1); 
    renderer.setYAxisMin(50); 
    renderer.setYAxisMax(220); 
    renderer.addXTextLabel(1, "Tue"); 
    renderer.addXTextLabel(2, "Wed"); 
    renderer.addXTextLabel(3, "Thu"); 
    renderer.addXTextLabel(4, "Fri"); 
    renderer.addXTextLabel(5, "Sat"); 
    renderer.addXTextLabel(6, "Sun"); 
    renderer.addXTextLabel(7, "Today"); 
    renderer.setYLabelsAlign(Paint.Align.RIGHT); 
    renderer.setBarWidth((float)25); 

    renderer.setShowAxes(false); 
    renderer.setShowLegend(false); 

    renderer.setMargins(new int[] {0,50,0,20}); 

    renderer.setApplyBackgroundColor(true); 
    renderer.setBackgroundColor(Color.TRANSPARENT); 
    renderer.setMarginsColor(Color.argb(0x00, 0xff, 0x00, 0x00)); 
    renderer.setShowGrid(true); 
    renderer.setShowGridY(false); 
    renderer.setGridColor(Color.GRAY); 
    renderer.setXLabels(0); // sets the number of integer labels to appear 
} 

}

这是怎么看起来像现在.. this is how it looks like now

+0

你究竟在哪里卡住了? –

+0

不知道如何给价值不同的颜色 – HeisenBerg

+0

@TimCastelijns我已经更新了我的问题,希望你现在得到它 – HeisenBerg

回答

0

我找到了解决我的问题通过使用第三方库称为MPAndroidChart

在MPAndroidChart中,您可以将值和颜色定义为数组。

假设图表包含7个小节。然后,你可以定义值和颜色

values[6] = {50, 34, 34, 57, 34, 34, 56} 
color[6] = {red, green, blue, black, yellow, orange, purple} 

所以第一条将红色,第二条将采取绿色,第三条将蓝色等。

相关问题