2017-03-17 13 views
1

私はグラフ上で作業していますが、正常に動作しています。私はMPChartライブラリを使用しています。すべてのバーの上部に正確な計算値が表示されます。ここでは、バーの上に表示される値が正確なバーの制限であることがわかります。バーの上に別の値を表示する方法

enter image description here

今、私はその限界値から

enter image description here

を異なるされるバーの上に別の値を表示する必要がある別の要件を持って、私はそれを教えてくださいどのように私はこれを達成することができます。

答えて

1

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]; 
    } 
} 
+0

あなたの貴重な時間と親切な努力のおかげでDavidに感謝しますが、このプロセスは変更したくないXAxisデータの底を変更しているので、まだ問題は残ります。下の値ではなく、各バーの上部に表示されているデータを変更するか、各バーの下部に表示している観測名を指定します。 – Devraj

+0

@Devraj更新された回答を確認してください。 barDataにValueFormatterを設定するだけです。 –

+0

Davidさん、ありがとうございました、今働いています。しかし、すべての棒に1つの浮動小数点値しか表示されていないという質問があります。浮動小数点値の場所にarraylistを設定すると、すべての棒に異なる値を設定できます。 – Devraj

関連する問題