私はスタックバーチャートを持っています。棒グラフの上に1つの値を表示し、棒の各スタックには値を表示しません。 IamはMpAndroichartライブラリを使用し、デフォルトではweek1のようにバーを表示しています。スタックバーチャートの上に表示する方法
week2のようにweek1のようにbarに値を表示したいとします。
私はスタックバーチャートを持っています。棒グラフの上に1つの値を表示し、棒の各スタックには値を表示しません。 IamはMpAndroichartライブラリを使用し、デフォルトではweek1のようにバーを表示しています。スタックバーチャートの上に表示する方法
week2のようにweek1のようにbarに値を表示したいとします。
私は今日もこれを理解しようとしていたと私は少し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";
}
}
}
これは、積み上げ棒グラフで最高値を表示するだけでなく、バーに積み重ねられたすべての値の合計も表示します。お役に立てれば!
お返事ありがとうございました。非常に役立ちます。 –
その場合、@KomalGupta –
の回答を受け入れる必要があります。すでに@maninder singh –
for (IDataSet set : mChart.getData().getDataSets()){
set.setDrawValues(set.isDrawValuesEnabled());
}
バーの上部に表示値のためにこれを使用してください。
実際、barchartのすべてのバーのすべての値の合計は100です。各スタックは%valueを表します。しかし私のバーの上に、私は別の属性から別の値を取り出しています。総価格を言う。 –
コードはどこにありますか?スクリーンショットを投稿する –
私はusecaseで自分の投稿を編集しました。 –