【发布时间】:2015-04-26 11:40:02
【问题描述】:
我正在使用 achartengine 绘制条形图,我希望根据 y 轴的值为每个条形使用不同的颜色,例如,如果值 > 100,则颜色 = 红色
所以我的图表看起来有点像这样。
那么,有没有可能用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
}
}
这就是现在的样子..
【问题讨论】:
-
你到底卡在哪里了?
-
不知道如何根据值赋予不同的颜色
-
@TimCastelijns 我已经更新了我的问题,希望你现在明白了
-
@HeisenBerg 你找到解决办法了吗?
-
是的,我使用了另一个名为 MPAndroidChart 的库。
标签: android