2016-04-05 17 views
1

私はスタックバーチャートを持っています。棒グラフの上に1つの値を表示し、棒の各スタックには値を表示しません。 IamはMpAndroichartライブラリを使用し、デフォルトではweek1のようにバーを表示しています。スタックバーチャートの上に表示する方法

week2のようにweek1のようにbarに値を表示したいとします。

enter image description here

+1

コードはどこにありますか?スクリーンショットを投稿する –

+0

私はusecaseで自分の投稿を編集しました。 –

答えて

2

私は今日もこれを理解しようとしていたと私は少しtrick.Hereの私がやっていることでそれを行っている:

private BarData generateBarData() 
{ 
    ArrayList<String> xVals = new ArrayList<>(); 
    for(int i=0; i<mMonths.length; i++) 
    { 
     xVals.add(mMonths[i]); 
    } 

    ArrayList<BarEntry> yVals = new ArrayList<>(); 
    yVals.add(new BarEntry(new float[] {15, 5, 5}, 0)); 
    yVals.add(new BarEntry(new float[] {12, 2, 6}, 1)); 
    yVals.add(new BarEntry(new float[] {15, 3, 4}, 2)); 
    yVals.add(new BarEntry(new float[] {15, 5, 1}, 3)); 
    yVals.add(new BarEntry(new float[] {13, 4, 1}, 4)); 
    yVals.add(new BarEntry(new float[] {10, 2, 1}, 5)); 
    yVals.add(new BarEntry(new float[] {15, 10, 2}, 6)); 
    yVals.add(new BarEntry(new float[] {15, 2, 1}, 7)); 
    yVals.add(new BarEntry(new float[] {14, 3, 6}, 8)); 
    yVals.add(new BarEntry(new float[] {15, 7, 2}, 9)); 
    yVals.add(new BarEntry(new float[] {15, 3, 1}, 10)); 
    yVals.add(new BarEntry(new float[] {11, 2, 4}, 11)); 

    ValueFormatter custom = new MyBarValueFormatter(mContext); 

    BarDataSet set = new BarDataSet(yVals, "Data Set"); 
    set.setBarSpacePercent(45f); 
    set.setColors(getColors()); 

    set.setHighlightEnabled(false); 
    set.setValueFormatter(custom); 
    set.setDrawValues(true); 

    BarData barData = new BarData(xVals, set); 

    return barData; 
} 

private int[] getColors() { 
    int[] colors = new int[3]; 
    colors[0] = getResources().getColor(R.color.barColor1); 
    colors[1] = getResources().getColor(R.color.barColor2); 
    colors[2] = getResources().getColor(R.color.barColor3); 
    return colors; 
} 

上記のコードで、私はBarChartコントロールのためのサンプルデータを生成していると私は持っていますMyBarValueFormatterクラスで私のトリックを以下のようにしました。

public class MyBarValueFormatter implements ValueFormatter { 

    private DecimalFormat mFormat; 
    private Context context; 

    int toggle; 
    float totalVal; 

    public MyBarValueFormatter(Context context){ 
     toggle = 0; 
     totalVal = 0; 
     this.context = context; 
     mFormat = new DecimalFormat("###,###,###,##0"); 
    } 

    @Override 
    public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) { 

     if(toggle % 3 == 0){ 
      toggle++; 
      totalVal = value; 
      return ""; 
     } 
     else if(toggle % 3 == 1){ 
      toggle++; 
      totalVal = totalVal + value; 
      return ""; 
     } 
     else{ 
      toggle++; 
      totalVal = totalVal + value; 
      return context.getResources().getString(R.string.rupee) + " " + mFormat.format(totalVal) + "000"; 
     } 
    } 
} 

これは、積み上げ棒グラフで最高値を表示するだけでなく、バ​​ーに積み重ねられたすべての値の合計も表示します。お役に立てれば!

enter image description here

+0

お返事ありがとうございました。非常に役立ちます。 –

+0

その場合、@KomalGupta –

+0

の回答を受け入れる必要があります。すでに@maninder singh –

0
for (IDataSet set : mChart.getData().getDataSets()){ 
    set.setDrawValues(set.isDrawValuesEnabled()); 
} 

バーの上部に表示値のためにこれを使用してください。

+0

実際、barchartのすべてのバーのすべての値の合計は100です。各スタックは%valueを表します。しかし私のバーの上に、私は別の属性から別の値を取り出しています。総価格を言う。 –

関連する問題