MPAndroidChart:如何创建分组BarChart?

时间:2016-10-03 07:23:46

标签: java android mpandroidchart

我正在使用MPAndroidChart创建分组数据集,但它在BarData data = new BarData(labels,dataSets );这一行显示错误Unable to resolve constructor,BarData(java.util.ArrayList)<java.lang.String>,java.util.ArrayList<com.github.mikephil.charting.data.BarDataSet;>我还投放了IBarDataSet然后应用程序是获得Unfortunately Stopped。我使用了依赖compile 'com.github.PhilJay:MPAndroidChart:v2.2.4'。有人请帮助我!!

//create BarEntry for group 1
            ArrayList<BarEntry> group1 = new ArrayList<>();
            group1.add(new BarEntry(4f, 0));
            group1.add(new BarEntry(8f, 1));
            group1.add(new BarEntry(6f, 2));
            group1.add(new BarEntry(12f, 3));
            group1.add(new BarEntry(18f, 4));
            group1.add(new BarEntry(9f, 5));

            // create BarEntry for group 2
            ArrayList<BarEntry> group2 = new ArrayList<>();
            group2.add(new BarEntry(6f, 0));
            group2.add(new BarEntry(7f, 1));
            group2.add(new BarEntry(8f, 2));
            group2.add(new BarEntry(12f, 3));
            group2.add(new BarEntry(15f, 4));
            group2.add(new BarEntry(10f, 5));

            // creating dataset for group1
            BarDataSet barDataSet1 = new BarDataSet(group1, "Brand 1");
            barDataSet1.setColors(ColorTemplate.COLORFUL_COLORS);

            // creating dataset for group2
            BarDataSet barDataSet2 = new BarDataSet(group2, "Brand 2");
            barDataSet2.setColors(ColorTemplate.COLORFUL_COLORS);

            // combined all dataset into an arraylist
            ArrayList<BarDataSet> dataSets = new ArrayList<>();
            dataSets.add(barDataSet1);
            dataSets.add(barDataSet2);


            ArrayList<String> labels = new ArrayList<>();
            labels.add("JAN");
            labels.add("FEB");
            labels.add("MAR");
            labels.add("APR");
            labels.add("MAY");
            labels.add("JUN");
            BarData data = new BarData(labels,dataSets );// initialize the Bardata with argument labels and dataSet
            barChartGroup.setData(data);

我想得到如下例子的数据集: -

Grouped DataSet

谢谢!

3 个答案:

答案 0 :(得分:2)

由于发布 v3.0.0 带来了与分组BarChart的绘制相关的重大更改,因此您应该修改您的依赖项以获取最新版本。

话虽如此,如何为您的数据组定义BarData?根据官方Wiki的example for "Grouped BarChart",您可以这样做:

BarData data = new BarData(barDataSet1, barDataSet2 );
barChartGroup.setData(data);

该示例还说明了如何设置条形/条形组之间的条宽和间隙。

顺便说一句,MPandroidChart依赖于您的条目进行排序。未排序的列表可能会或可能不会正确绘制。除此之外,至少在示例中,两组条目具有相同的x值集,因此填写缺失值可能是个好主意。

关于标签:目前似乎不可能像你一样设置标签。有关对x轴使用自定义ValueFormatter的变通方法,请参阅此SO post by TR4Android

答案 1 :(得分:1)

答案 2 :(得分:-1)

使用

ArrayList dataSets = new ArrayList <>();

代替

ArrayList dataSets = new ArrayList <>();