-
-
Notifications
You must be signed in to change notification settings - Fork 9k
The ValueFormatter interface
Philipp Jahoda edited this page May 18, 2017
·
18 revisions
Available since v1.6.2 - changed (improved) in v2.1.4
The IValueFormatter
interface can be used to create custom-made formatter classes that allow to format values within the chart (from DataSets
) in a specific way before drawing them.
For using the IValueFormatter
, simply create a new class and let it implement the interface and return whatever you want to be displayed from the getFormattedValue(...)
method.
public class MyValueFormatter implements IValueFormatter {
private DecimalFormat mFormat;
public MyValueFormatter() {
mFormat = new DecimalFormat("###,###,##0.0"); // use one decimal
}
@Override
public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
// write your logic here
return mFormat.format(value) + " $"; // e.g. append a dollar-sign
}
}
Then, set your formatter to the ChartData
or DataSet
object:
// usage on whole data object
lineData.setValueFormatter(new MyValueFormatter());
// usage on individual dataset object
lineDataSet.setValueFormatter(new MyValueFormatter());
- LargeValueFormatter: Can be used for formatting large values > "1.000". It will turn values like "1.000" into "1k", "1.000.000" will be "1m" (million), "1.000.000.000" will be "1b" (billion) and values like one trillion will be e.g. "1t".
-
PercentFormatter: Used for displaying a "%" sign after each value with 1 decimal digit. Especially useful for the
PieChart
. 50 -> 50.0 % -
StackedValueFormatter: A formatter specifically designed to be used with stacked
BarChart
. It allows to specify whether all stack values should be drawn or just the top value.