我遇到了一点麻烦,因为当我从firestore数据库中得到一个计数时,它显示的是25而不是1。我似乎无法解决这个问题。我认为它显示的是计数的1/4,因为当我试图只添加三个计数时,输出只显示33.33。
这是我的代码,我已经寻找方法来解决这个问题,但我似乎没有找到方法来解决它。
private void setPieChart() {
pieChart.setDrawHoleEnabled(true);
pieChart.setUsePercentValues(true);
pieChart.setEntryLabelTextSize(12);
pieChart.setEntryLabelColor(Color.BLACK);
pieChart.setCenterTextSize(24);
pieChart.getDescription().setEnabled(false);
Legend l = pieChart.getLegend();
l.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);
l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT);
l.setOrientation(Legend.LegendOrientation.VERTICAL);
l.setDrawInside(false);
l.setEnabled(true);
}
private void loadPiechartData() {
entries = new ArrayList<>();
db.collection("charot")
.whereEqualTo("electricity", "lugi")
.count()
.get(AggregateSource.SERVER).addOnCompleteListener(task -> {
entries.add(new PieEntry(task.getResult().getCount(), "lugi"));
db.collection("charot")
.whereEqualTo("mahal", "bawi")
.count()
.get(AggregateSource.SERVER).addOnCompleteListener(task2 -> {
entries.add(new PieEntry(task2.getResult().getCount(), "bawi"));
db.collection("charot")
.whereEqualTo("basta", "ewan")
.count()
.get(AggregateSource.SERVER).addOnCompleteListener(task3 -> {
entries.add(newPieEntry(task2.getResult().getCount(),"ewan"));
db.collection("charot")
.whereEqualTo("tuiton", "pwede")
.count()
.get(AggregateSource.SERVER).addOnCompleteListener(task4-> {
entries.add(new PieEntry(task4.getResult().getCount(), "pwede"));
if (task.isComplete()) {
ArrayList<Integer> colors = new ArrayList<>();
for (int color : ColorTemplate.MATERIAL_COLORS) {
colors.add(color); }
for (int color : ColorTemplate.VORDIPLOM_COLORS) {
colors.add(color); }
PieDataSet dataSet = new PieDataSet(entries, "");
dataSet.setColors(colors);
PieData data = new PieData(dataSet);
data.setValueFormatter(new ValueFormatter() {
@Override
public String getFormattedValue(float value) {
return String.valueOf((int) value)}
});
data.setDrawValues(true);
data.setValueTextSize(12f);
data.setValueTextColor(Color.BLACK);
pieChart.setData(data);
pieChart.invalidate();
pieChart.animateY(1000, Easing.EaseInOutQuad);
}
});
});
});
});
我仍然掌握着图表的窍门,甚至我的团队也无法修复它。
这是我的数据库x1c 0d1x
这是输出
2条答案
按热度按时间o0lyfsai1#
您在
setPieChart()
中调用pieChart.setUsePercentValues(true);
,因此它显示的是百分比而不是实际值。如果您想看到值,请删除它或将其设置为false。ulydmbyx2#
删除此行
设置使用百分比值(真);
也可以使用Tasks类代替嵌套查询。