条形图栏上的自定义颜色设置MPAndroid库

时间:2017-12-24 03:20:51

标签: android graph bar-chart

我正在使用MPAndroid图表库,我正在使用条形图显示单个条形宗教值。我想根据宗教名称为每个BarEntry提供一种颜色,例如" Islam" =绿色,"基督教" =蓝色等我在这个论坛上搜索了很多例子但是无法解决这个问题。

List<BarEntry> entries = new ArrayList<>();
    entries.add(new BarEntry(0f, 20,"Islam"));
    entries.add(new BarEntry(1f, 20,"Christianity"));
    entries.add(new BarEntry(2f, 20,"Judaism"));
    entries.add(new BarEntry(3f,20,"Sikhism"));
    entries.add(new BarEntry(4f,20,"Hinduism"));

    BarDataSet bSet = new BarDataSet(entries, "Marks");
    bSet.setColors(ColorTemplate.VORDIPLOM_COLORS);

    ArrayList<String> barFactors = new ArrayList<>();
    barFactors.add("Islam");
    barFactors.add("Christianity");
    barFactors.add("Judaism");
    barFactors.add("Sikhism");
    barFactors.add("Hinduism");


    XAxis xAxis = chart.getXAxis();
    xAxis.setGranularity(1f);
    xAxis.setGranularityEnabled(true);
    BarData data = new BarData(bSet);
    data.setBarWidth(1f); // set custom bar width
    data.setValueTextSize(12);
    Description description = new Description();
    description.setTextColor(R.color.colorPrimary);
    description.setText("Religion analysis");
    chart.setDescription(description);
    chart.setData(data);
    chart.setFitBars(true); // make the x-axis fit exactly all bars
    chart.invalidate(); // refresh
    chart.getXAxis().setValueFormatter(new   IndexAxisValueFormatter(barFactors));

我正在使用此库链接:

implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'

enter image description here

我希望这张照片中的条形颜色像底色。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您需要在colors.xml文件中定义颜色,如下所示:

<color name="Islam">#1abc9c</color>
<color name="Christianity">#2ecc71</color>
<color name="Judaism">#3498db</color>
<color name="Sikhism">#9b59b6</color>
<color name="Hinduism">#16a085</color>

还在上面的代码中提供您的相应颜色代码。

之后你需要告诉bardataset这些颜色如下:

barDataSet.setColors(new int[]
            {
                    R.color.Islam, R.color.Christianity, R.color.Judaism, 
                    R.color.Sikhism, R.color.Hinduism
            }, getContext());

这将完成工作,只需按照为条形数据集赋予值的顺序给出颜色顺序。