【问题标题】:Achartengine, set different color for bars in a barchartAchartengine,为条形图中的条形设置不同的颜色
【发布时间】: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


【解决方案1】:

我通过使用另一个名为 MPAndroidChart 的库找到了解决问题的方法

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

假设图表包含 7 个柱。然后您可以将值和颜色定义为

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多