无法在MPAndroidChart

时间:2016-12-08 06:15:45

标签: android mpandroidchart

我想为BarChart MPAndroidChart中的栏设置特定颜色。我根据文档做了一切,但颜色没有变化。 这是我的代码:

   barChart = (BarChart) findViewById(R.id.bar_chart);
   List<BarEntry> entries = new ArrayList<BarEntry>();
   entries.add(new BarEntry(1.0f, 10.0f)); //tmp values

   BarDataSet dataSet = new BarDataSet(entries, "bars");
   dataSet.setColor(R.color.red); //color from resourses

   BarData barData = new BarData(dataSet);

   barChart.setData(barData);
   barChart.invalidate(); 

有趣的是,在我尝试改变酒吧的颜色之前,酒吧是蓝色的,在我试图改变它的颜色后,它变成了灰色(无论它必须是什么颜色)。我不明白为什么颜色不会改变。 我还试图覆盖getColor类中的BarDataSet方法,但结果是相同的 - 条形图是灰色的。

Grey, but not red

4 个答案:

答案 0 :(得分:8)

更改此行,

dataSet.setColor(R.color.red); //resource id of a color

to,

dataSet.setColor(getResources().getColor(R.color.red)); //resolved color

当您调用setColor时,您需要传入一个表示RGB三元组的整数。 R.color.red不是RGB三元组,而是一个表示R.java中的资源的整数。

有关资源ID和已解析颜色之间差异的详情,请参阅this question

答案 1 :(得分:2)

import csv
with open('D:/test.csv', 'r') as f, open('D:/out.csv', 'w') as f_out:
    reader = csv.DictReader(f)
    writer = csv.DictWriter(f_out, fieldnames=reader.fieldnames)
    writer.writeheader()  # For writing header
    for row in reader:
        if row['ICLEVEL'] == '1':
            writer.writerow(row)

答案 2 :(得分:1)

如果要设置颜色,可以创建颜色数组。然后将该数组设置为Bardataset。 示例如下。

int[] colors = {Color.rgb(153, 193, 12), Color.rgb(179, 130, 76)};

    Bardataset.setColors(colors);

我认为你应该按照这个顺序编写你的代码。 看看下面:

      BarDataSet dataSet = new BarDataSet(entries, "bars");
      dataSet.setColor(Color.parseColor("#104E78"));
      BarData barData = new BarData(dataSet);

试试吧。

答案 3 :(得分:0)

我们可以这样改变颜色。

    bardataset.setColors(new int[]{getResources().getColor(R.color.red)});