【发布时间】:2015-10-29 20:58:32
【问题描述】:
我正在使用MPAndroidChart,我有两个问题:
- MPAndroid 饼图删除小数百分比
- 在饼图上不显示值小于 10% 的值,但显示切片;小于 10% 的百分比不应仅显示文本。
【问题讨论】:
我正在使用MPAndroidChart,我有两个问题:
【问题讨论】:
3.0.0+ 版更新
现在通过扩展ValueFormatter 类并覆盖格式化所需的方法来完成格式化值。这也是可以插入自定义逻辑(例如,仅显示大于 10 的值的标签)的地方。
class MyValueFormatter : ValueFormatter() {
private val format = DecimalFormat("###,##0.0")
// override this for e.g. LineChart or ScatterChart
override fun getPointLabel(entry: Entry?): String {
return format.format(entry?.y)
}
}
更多示例和详细解释可以在new documentation找到。
【讨论】:
使用新版本(3.0.0)的 MPAndroidChart,使用以下方法:
在setData() 方法中:
PieData data = new PieData(dataSet);
data.setValueFormatter(new DecimalRemover(new DecimalFormat("###,###,###")));
这是 DecimalRemover 类:
public class DecimalRemover extends PercentFormatter {
protected DecimalFormat mFormat;
public DecimalRemover(DecimalFormat format) {
this.mFormat = format;
}
@Override
public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
if(value < 10) return "";
return mFormat.format(value) + " %";
}
}
ValueFormatter 已替换为 PercentFormatter
【讨论】:
要删除小数百分比,请轻松使用:
PiedataSet.setValueFormatter(new PercentFormatter(new DecimalFormat("###,###,##0")));
【讨论】:
第一步:
请把它放在你的包文件夹中的“PercentFormatter”类下面:
public class PercentFormatter extends ValueFormatter {
public DecimalFormat mFormat;
private PieChart pieChart;
public PercentFormatter() {
mFormat = new DecimalFormat("###,###,##");
}
public PercentFormatter(PieChart pieChart) {
this();
this.pieChart = pieChart;
}
@Override
public String getFormattedValue(float value) {
return mFormat.format(value) + " %";
}
@Override
public String getPieLabel(float value, PieEntry pieEntry) {
if (pieChart != null && pieChart.isUsePercentValuesEnabled()) {
// Converted to percent
return getFormattedValue(value);
} else {
// raw value, skip percent sign
return mFormat.format(value);
}
}
}
第二步: 在您设置 Piedata 的活动中,以这种方式在 PieDataset 中添加值格式:
pieChart = (PieChart) findViewById(R.id.pieChart);
PieDataSet pieDataSet = new PieDataSet(getData(approved, pending, rejected), "");
pieDataSet.setValueFormatter(new PercentFormatter());
PieData pieData = new PieData(pieDataSet);
pieChart.setData(pieData);
这样,我们可以去掉 Pie 数据中的小数点。
【讨论】: