MPAndroidChart,如何删除小数百分比而不显示低于 10 的百分比?
MPAndroidChart, how to remove decimal percentages and not show percentages below 10?
我正在使用 MPAndroidChart,我有两个问题:
- MPAndroid 饼图删除小数百分比
- 不在饼图上显示值小于 10% 的值,但显示切片;对于小于 10% 的百分比,不应只显示文本。
版本更新 3.0.0+
格式化值现在通过扩展 ValueFormatter
class 并覆盖格式化所需的方法来完成。这也是可以插入自定义逻辑(例如,仅显示大于 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 class:
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
”class 下方:
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);
}
}
}
第二步:
在你的 activity 设置 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);
这样,我们就可以去掉饼图数据中的小数点了。
我正在使用 MPAndroidChart,我有两个问题:
- MPAndroid 饼图删除小数百分比
- 不在饼图上显示值小于 10% 的值,但显示切片;对于小于 10% 的百分比,不应只显示文本。
版本更新 3.0.0+
格式化值现在通过扩展 ValueFormatter
class 并覆盖格式化所需的方法来完成。这也是可以插入自定义逻辑(例如,仅显示大于 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 class:
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
”class 下方:
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);
}
}
}
第二步: 在你的 activity 设置 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);
这样,我们就可以去掉饼图数据中的小数点了。