在我的应用程序中,我想在饼图上显示一些数据。我正在使用MPAndroidChart库并按照文档编写了一个漂亮的图表,并正确显示了我的所有数据。
现在,我想改进我的图表,但我遇到了一些麻烦。我的数据是指一天,但有两类:收入和收入。到目前为止,我已将它们作为单个PieDataSet
处理(它们有标签,因此很容易区分它们)。现在我想区分收入和收入,在同一个饼图中用不同的颜色显示它们。
我尝试按照this链接(折线图部分)将其调整为饼图,但Android Studio告诉我,我不能使用List<IPieDataSet>
作为参数来构建一个PieData
对象。这是代码:
public static void drawPie( List<PieEntry> entriesU, List<PieEntry>entriesE, PieChart chart){
PieDataSet set = new PieDataSet(entriesU,"uscite");
PieDataSet set1 = new PieDataSet(entriesE,"entrate");
List<IPieDataSet> dataSets = new ArrayList<>();
dataSets.add(set);
dataSets.add(set1);
set.setSliceSpace(5);
set1.setSliceSpace(5);
PieData data = new PieData(dataSets);
chart.setData(data);
}
我经常搜索,但我仍然没有找到这个问题的答案。
问题:
可以在同一个饼图上显示多个数据集吗?如果有可能,我该怎么做?
答案 0 :(得分:1)
饼图是一个360度圆,其中切片表示给定数据集总数的百分比。这仅在单个IDataSet
的上下文中有意义。因此,与BarChart
和LineChart
不同,PieChart
不支持多个IDataSet
。
我认为你真正想要的是为你的“收入”和“收入”使用不同的颜色。要做到这一点,您需要做的就是创建一个List<Integer>
已解析的颜色(而不是颜色资源),其中列表中的位置与PieEntry
添加到图表中的顺序相匹配。
为了说明,我们说我们有:
entries.add(new PieEntry(15f, "entrate1")); //revenue1
entries.add(new PieEntry(20f, "uscite1")); //expense1
entries.add(new PieEntry(10f, "entrate2")); //revenue2
entries.add(new PieEntry(50f, "uscite2")); //expense2
您只需创建与{1}}匹配的已解析颜色:
List<Integer>
现在您的所有收入都是红色,而且您的费用是蓝色的。您甚至可以聪明地编写一个将List<Integer> colors = new ArrayList<Integer>();
colors.add(ContextCompat.getColor(context, R.color.red));
colors.add(ContextCompat.getColor(context, R.color.blue));
colors.add(ContextCompat.getColor(context, R.color.red));
colors.add(ContextCompat.getColor(context, R.color.blue));
dataSet.setColors(colors);
映射到颜色而不是手动执行的功能。
在任何情况下,this answer here都适用于设置饼图切片的颜色。