我正在使用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);
我想得到如下例子的数据集: -
谢谢!
答案 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)
这是完整的代码
apply()
答案 2 :(得分:-1)
使用
ArrayList dataSets = new ArrayList <>();
代替
ArrayList dataSets = new ArrayList <>();