2
我使用achartengine绘制条形图,并且我想根据y轴的值为每个条形图添加不同的颜色,如果值> 100,颜色=红色Achartengine,为条形图中的酒吧设置不同的颜色
所以我的图表看起来有点像这样。
那么,是不是可以用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
}
}
这是怎么看起来像现在..
你究竟在哪里卡住了? –
不知道如何给价值不同的颜色 – HeisenBerg
@TimCastelijns我已经更新了我的问题,希望你现在得到它 – HeisenBerg