如何使用 Mikephil 饼图从项目中删除小数位
How to remove decimal places from project using Mikephil pie chart
这里是整数的静态值
private int upload=14, bill=15, unbill=85, total=100, unupload=12, sign=10, unsign=90, print=12, unprint=88;
设置饼图入口
ArrayList<Entry> entries = new ArrayList<>();
entries.add(new Entry(bill, 0));
entries.add(new Entry(unbill, 1));
entries.add(new Entry(print, 2));
entries.add(new Entry(unprint, 3));
entries.add(new Entry(sign, 4));
entries.add(new Entry(unsign, 5));
entries.add(new Entry(upload, 6));
entries.add(new Entry(unupload, 7));
int colors[] ={Color.rgb(84, 139, 221), Color.rgb(251, 249, 146),Color.rgb(151, 212, 153), Color.rgb(183, 144, 189),Color.rgb(226, 148, 188),Color.rgb(208, 189, 121),Color.rgb(185, 147, 134),Color.rgb(206, 139, 130)};
这里我使用的是 Mikephil PieChart,下面我在数据集中添加了条目。
PieDataSet dataset = new PieDataSet(entries, "Graph");
dataset.setColors(colors);
dataset.setSliceSpace(3f);
我得到了这个输出。所以我想删除我在
中提到的小数位
输出完美。我只想要没有小数位的输出。我该怎么做?
如果您可以输入整数值作为参数,或者如果库方法不接受整数值,您必须自定义库!
这个问题与 which has a good answer already. This relevant question 基本相同,图书馆作者也有规范的回答。很高兴提出问题,但将来您可以通过事先研究以确保您的问题尚未被问到,从而避免对您的问题投反对票。
完全没有必要将库添加为 .jar
文件并像以前的 low-quality 答案那样编辑库代码。这只会破坏使用库和使用 Gradle.
等构建工具的全部目的
根据上面链接中已接受答案的确切内容,编写一个 class 实现 IValueFormatter
,如下所示:
public class IntValueFormatter implements IValueFormatter {
@Override
public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
return String.valueOf((int) value);
}
}
然后你这样消费它:
pieDataSet.setValueFormatter(new IntValueFormatter());
您需要创建一个自定义的 percentFormatter 来格式化图表上的百分比显示。
public class Remover extends PercentFormatter {
private DecimalFormat mDecimalFormat;
public Remover (DecimalFormat format) {
this.mDecimalFormat = format;
}
@Override
public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
return "% " + mDecimalFormat.format(value) ;
}
}
然后您可以通过在图表对象上调用 setValueFormatter() 将此格式化程序分配给您的图表。
设置ValueFormatter如下
pieData.setValueFormatter(new ValueFormatter() {
@Override
public String getFormattedValue(float value) {
return String.valueOf((int) Math.floor(value));
}
});
第一步:
请将其放在您的包文件夹中的“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 中添加值格式是这样的:
pieDataSet.setValueFormatter(new PercentFormatter());
PieData pieData = new PieData(pieDataSet);
pieChart.setData(pieData);
这样,我们就可以去掉饼图数据中的小数点了。
return String.valueOf(Math.floor(value)).replace(".0","")
这对我有用
这里是整数的静态值
private int upload=14, bill=15, unbill=85, total=100, unupload=12, sign=10, unsign=90, print=12, unprint=88;
设置饼图入口
ArrayList<Entry> entries = new ArrayList<>();
entries.add(new Entry(bill, 0));
entries.add(new Entry(unbill, 1));
entries.add(new Entry(print, 2));
entries.add(new Entry(unprint, 3));
entries.add(new Entry(sign, 4));
entries.add(new Entry(unsign, 5));
entries.add(new Entry(upload, 6));
entries.add(new Entry(unupload, 7));
int colors[] ={Color.rgb(84, 139, 221), Color.rgb(251, 249, 146),Color.rgb(151, 212, 153), Color.rgb(183, 144, 189),Color.rgb(226, 148, 188),Color.rgb(208, 189, 121),Color.rgb(185, 147, 134),Color.rgb(206, 139, 130)};
这里我使用的是 Mikephil PieChart,下面我在数据集中添加了条目。
PieDataSet dataset = new PieDataSet(entries, "Graph");
dataset.setColors(colors);
dataset.setSliceSpace(3f);
我得到了这个输出。所以我想删除我在
输出完美。我只想要没有小数位的输出。我该怎么做?
如果您可以输入整数值作为参数,或者如果库方法不接受整数值,您必须自定义库!
这个问题与
完全没有必要将库添加为 .jar
文件并像以前的 low-quality 答案那样编辑库代码。这只会破坏使用库和使用 Gradle.
根据上面链接中已接受答案的确切内容,编写一个 class 实现 IValueFormatter
,如下所示:
public class IntValueFormatter implements IValueFormatter {
@Override
public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
return String.valueOf((int) value);
}
}
然后你这样消费它:
pieDataSet.setValueFormatter(new IntValueFormatter());
您需要创建一个自定义的 percentFormatter 来格式化图表上的百分比显示。
public class Remover extends PercentFormatter {
private DecimalFormat mDecimalFormat;
public Remover (DecimalFormat format) {
this.mDecimalFormat = format;
}
@Override
public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
return "% " + mDecimalFormat.format(value) ;
}
}
然后您可以通过在图表对象上调用 setValueFormatter() 将此格式化程序分配给您的图表。
设置ValueFormatter如下
pieData.setValueFormatter(new ValueFormatter() {
@Override
public String getFormattedValue(float value) {
return String.valueOf((int) Math.floor(value));
}
});
第一步:
请将其放在您的包文件夹中的“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 中添加值格式是这样的:
pieDataSet.setValueFormatter(new PercentFormatter());
PieData pieData = new PieData(pieDataSet);
pieChart.setData(pieData);
这样,我们就可以去掉饼图数据中的小数点了。
return String.valueOf(Math.floor(value)).replace(".0","")
这对我有用