Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set colors in MPAndroidChart?

I'm using MPChartlib for a basic "Barchart" (3 bars and values between 0 and 100).

the background of the app is dark so I'd like to put the text in white but when I set the text with color code "FFFFFF" in chart_color stored in string.xml but the text appear in dark blue.

   //Axe X
   XAxis x = barchart.getXAxis();
   x.setPosition(XAxisPosition.BOTTOM);
   x.setTextColor(R.color.chart_color);
   x.setAxisLineColor(R.color.chart_color);


   // Design
   barchart.setDragEnabled(false);
   barchart.setDrawGridBackground(false);
   barchart.setTouchEnabled(false);
   barchart.setHighlightEnabled(false);
   barchart.setMaxVisibleValueCount(101);
   barchart.setDescription(null);
   barchart.setGridBackgroundColor(R.color.chart_color);

   barchart.invalidate(); // refresh

   //Axe Y
   barchart.getAxisLeft().setAxisMaxValue(100);
   barchart.getAxisLeft().setDrawTopYLabelEntry(true);
   barchart.getAxisLeft().setDrawAxisLine(false);
   barchart.getAxisLeft().setDrawGridLines(false);
   barchart.getAxisLeft().setAxisLineColor(R.color.chart_color);
   barchart.getAxisLeft().setTextColor(R.color.chart_color);

   barchart.getAxisRight().setAxisMaxValue(100);
   barchart.getAxisRight().setDrawTopYLabelEntry(true);
   barchart.getAxisRight().setAxisLineColor(R.color.chart_color);
   barchart.getAxisRight().setTextColor(R.color.chart_color);

I tried lots of things and research but couldn't find the issue, does the lib doesn't use the same kind of color code or something ?

Thanks for your help, Alex

like image 597
Alexandre Avatar asked Apr 22 '15 07:04

Alexandre


2 Answers

You are passing the resource id to the library, not the actual color.

Use this to get the color:

    int color = ContextCompat.getColor(context, R.color.chart_color);

    LineDataSet dataSet = ...;
    dataSet.setColor(color);

You can also find this in the documentation.

like image 78
Philipp Jahoda Avatar answered Oct 08 '22 07:10

Philipp Jahoda


if you want change bars color prefer pass context as well like example below

ArrayList<BarEntry> entries = new ArrayList<>();
        entries.add(new BarEntry(87f, 0));
        entries.add(new BarEntry(90f, 1));


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

        BarDataSet dataSet = new BarDataSet(entries, "# of Calls ");
        BarData barData = new BarData(labels, dataSet);
        dataSet.setColors(new int[]{R.color.color1 , R.color.color2} , context);
        barChart.setData(barData);
        barChart.animateY(3000 , Easing.EasingOption.EaseOutBack );
like image 36
Mina Fawzy Avatar answered Oct 08 '22 07:10

Mina Fawzy