ValueFormatter
を使用してこれを行うことができます。あなたは、単にこのインターフェイスを実装するクラスを作成し、メソッドオーバーライドします:メソッド内で表示したい値に実際の値を変換する必要があるロジックを入れ
String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler)
を。たとえば、次のようValueFormatter
は、単純に10で実際のチャート値を乗算:
barData.setValueFormatter(new TenTimesValueFormatter());
あなたはおそらく必要があります:
mChart.getXAxis().setGranularity(1);
mChart.getXAxis().setGranularityEnabled(true);
アップデートを
が public class TenTimesValueFormatter implements ValueFormatter {
@Override
protected String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
return Integer.toString(value * 10);
}
}
あなたはこのようにそれを消費することができます:ValueFormatter
が単にバッキング配列から値を取る必要がある場合は、次のようにすることができます:
public class IndexValueFormatter implements IValueFormatter {
private final String [] values;
public IndexValueFormatter(String[] values) {
this.values = values;
}
@Override
public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
int index = Math.round(value);
if (index < 0 || index >= values.length || index != (int)value)
return "";
return values[index];
}
}
あなたの貴重な時間と親切な努力のおかげでDavidに感謝しますが、このプロセスは変更したくないXAxisデータの底を変更しているので、まだ問題は残ります。下の値ではなく、各バーの上部に表示されているデータを変更するか、各バーの下部に表示している観測名を指定します。 – Devraj
@Devraj更新された回答を確認してください。 barDataにValueFormatterを設定するだけです。 –
Davidさん、ありがとうございました、今働いています。しかし、すべての棒に1つの浮動小数点値しか表示されていないという質問があります。浮動小数点値の場所にarraylistを設定すると、すべての棒に異なる値を設定できます。 – Devraj