我有一个y值的数组,我在一个月的日期显示。为简化起见,对于4月的第一周,我的值为{0,200,0,0,500,0,100},超过x值{1,2,3,4,5,6,7}。我可以使用MPAndroidChart将它们显示为条形图。我也可以使用
隐藏和显示每个栏上的值barChart.getData().setDrawValues(true); //or false when I want to hide
但是,我想只显示非零的数字,我怎么能这样做?任何指针都将不胜感激!
我尝试按以下方式创建格式化程序:
public class MyYAxisValueFormatter implements IAxisValueFormatter {
private DecimalFormat mFormat;
public MyYAxisValueFormatter() {
// format values to 1 decimal digit
mFormat = new DecimalFormat("###,###,##0.0");
}
@Override
public String getFormattedValue(float value, AxisBase axis) {
String val = "";
if(value != 0)
val = String.valueOf(value);
return mFormat.format(value) + " $";
}
}
并在我的主要功能中使用它来调用它:
YAxis yAxis = barChart.getAxisLeft();
yAxis.setValueFormatter(new MyYAxisValueFormatter());
但仍会显示零值。
答案 0 :(得分:1)
尝试制作自己的IValueFormatter
界面
public class MyYAxisValueFormatter implements IValueFormatter {
private DecimalFormat mFormat;
public MyYAxisValueFormatter() {
// format values to 1 decimal digit
mFormat = new DecimalFormat("###,###,##0.0");
}
@Override
public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
// "value" represents the position of the label on the axis (x or y)
if(value > 0) {
return mFormat.format(value);
} else {
return "";
}
}
}
尝试将值格式化程序设置为条形图。
bar.setValueFormatter(new MyYAxisValueFormatter ());
答案 1 :(得分:0)
试试这个:
private class MyValueFormatter implements ValueFormatter {
@Override
public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
// write your logic here
if(value > 0)
return value+"";
else
return "";
}
}
或强>
尝试这个likn它可以帮助你