在MPAndroidChart条形图中为条形设置不同的颜色

时间:2017-10-26 06:30:59

标签: android mpandroidchart

如何根据Y轴的值设置不同条形的颜色? 我正在使用MPAndroidChart库来制作图表。这就是我制作条形图所做的工作:

        BarChart barChart = (BarChart) findViewById(R.id.chart);
        BarDataSet dataset = new BarDataSet(entries, "Calorie Level");


        ArrayList<String> labels = new ArrayList<String>();
        labels.add("0");
        labels.add("1");
        labels.add("2");  

        BarData data = new BarData(labels, dataset);
        barChart.setData(data);
        barChart.animateY(2000);

我正在计算以下函数的值。我需要根据下面给出的'delta'的值设置每个柱的颜色

private void addCalories(int calories, int time)
        {   totalCals += calories;
            float HBNow = HBE * time / 24;
            float delta = totalCals - HBNow;
            entries.add(new BarEntry(delta, time));
            Log.e("My Activity:", "Delta" + delta + "Time:" + time);
        }

3 个答案:

答案 0 :(得分:4)

你可以创建一个包含颜色的arraylist

ArrayList<Integer> colors = new ArrayList<Integer>();

colors.add(ContextCompat.getColor(this, R.color.dodger_blue));
colors.add(ContextCompat.getColor(this, R.color.peach));
colors.add(ContextCompat.getColor(this, R.color.medium_pink_three));
colors.add(ContextCompat.getColor(this, R.color.aqua));
colors.add(ContextCompat.getColor(this, R.color.greeny_blue));
colors.add(ContextCompat.getColor(this, R.color.charcoal));
colors.add(ContextCompat.getColor(this, R.color.charcoal_grey));

然后将此数组设置为您的图表数据集,如此

dataset.setColors(colors);

在addCalories()函数中,您可以使用自己的逻辑创建包含颜色的数组。计算完所有值后,可以将颜色设置为数据集。

答案 1 :(得分:0)

尝试使用barDataSet.setColor(Color.BLUE);方法设置条形颜色

 ArrayList<BarEntry> valueSet1 = new ArrayList<>();
 BarEntry v1e1 = new BarEntry(8f, 0); // Jan
 valueSet1.add(v1e1);

 BarDataSet barDataSet1 = new BarDataSet(valueSet1, "Views");
 barDataSet1.setColor(Color.BLUE);

 ArrayList<BarDataSet> dataSets  = new ArrayList<>();
 dataSets.add(barDataSet1);

答案 2 :(得分:0)

这帮助我a为所需的列或片段获得了自定义颜色。确保按添加数据的顺序添加颜色,以便在所需的位置获得所需的颜色。

    colors.add(ContextCompat.getColor(this, R.color.active));
    colors.add(ContextCompat.getColor(this, R.color.recovered));
    colors.add(ContextCompat.getColor(this, R.color.death));
    dataSet.setColors(colors);