0
棒グラフにMPAndroidChart
ライブラリを使用しています。その中で、chart.setDrawValueAboveBar(false)
を使用して棒の内側に棒の値を設定しました。MPAndroidChart BarChart - 棒の内部の垂直値
お願いします。事前におねがいします。
棒グラフにMPAndroidChart
ライブラリを使用しています。その中で、chart.setDrawValueAboveBar(false)
を使用して棒の内側に棒の値を設定しました。MPAndroidChart BarChart - 棒の内部の垂直値
お願いします。事前におねがいします。
まず、あなたのデータのためのドロー値を有効
mChart.setDrawValueAboveBar(false);
この偽のは、あなたが同様にテキストを回転させる必要があるので..あなたは、あなたのためのカスタムレンダラを実装する必要が
barDataSet.setDrawValues(true);
を設定してくださいチャート。レンダラーの仕組みを知りたい場合は、これをチェックしてくださいanswer
以下のサンプル実装を提供しました。あなたはあなたに合ったテキストの位置を制御するためにそれを変更することができます。
カスタムレンダラ
public class BarChartCustomRenderer extends BarChartRenderer {
public BarChartCustomRenderer(BarDataProvider chart, ChartAnimator animator, ViewPortHandler viewPortHandler) {
super(chart, animator, viewPortHandler);
}
public void drawValue(Canvas c, IValueFormatter formatter, float value, Entry entry, int dataSetIndex, float x, float y, int color) {
mValuePaint.setColor(color);
c.save();
c.rotate(90f, x, y);
Log.d("here", formatter.getFormattedValue(value, entry, dataSetIndex, mViewPortHandler));
c.drawText(formatter.getFormattedValue(value, entry, dataSetIndex, mViewPortHandler), x, y, mValuePaint);
c.restore();
}
}
チャートコード
BarChart mChart = (BarChart) findViewById(R.id.barChart);
mChart.setDrawBarShadow(false);
mChart.setDrawValueAboveBar(false);
mChart.getDescription().setEnabled(false);
mChart.setDrawGridBackground(false);
//**add renderer**
BarChartCustomRenderer barChartCustomRenderer = new BarChartCustomRenderer(mChart, mChart.getAnimator(), mChart.getViewPortHandler());
mChart.setRenderer(barChartCustomRenderer);
XAxis xaxis = mChart.getXAxis();
xaxis.setDrawGridLines(false);
xaxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xaxis.setGranularity(0.5f);
xaxis.setGranularityEnabled(true);
xaxis.setDrawLabels(true);
xaxis.setDrawAxisLine(false);
YAxis yAxisLeft = mChart.getAxisLeft();
yAxisLeft.setPosition(YAxis.YAxisLabelPosition.INSIDE_CHART);
yAxisLeft.setDrawGridLines(false);
yAxisLeft.setDrawAxisLine(false);
yAxisLeft.setEnabled(false);
mChart.getAxisRight().setEnabled(false);
Legend legend = mChart.getLegend();
legend.setEnabled(false);
ArrayList<BarEntry> valueSet1 = new ArrayList<BarEntry>();
ArrayList<String> ylabels = new ArrayList<>();
for (int i = 0; i < 6; ++i) {
BarEntry entry = new BarEntry(i, (i + 1) * 2);
valueSet1.add(entry);
ylabels.add(" " + i);
}
List<IBarDataSet> dataSets = new ArrayList<>();
BarDataSet barDataSet = new BarDataSet(valueSet1, " ");
barDataSet.setColor(Color.CYAN);
barDataSet.setDrawValues(true);
dataSets.add(barDataSet);
BarData data = new BarData(dataSets);
data.setBarWidth(0.4f);
data.setValueTextSize(10f);
data.setValueTextColor(Color.BLACK);
mChart.setData(data);
mChart.setFitBars(true);
mChart.invalidate();
結果
はい。私は自分のコードで両方の行を使用しましたが、その値をバーに垂直に表示したいとします。 – Manoj273
画像を参照してください..あなたはこの結果を望んでいませんか? – amarok
はい、正しいですが、私の場合は4〜5桁の長さなので、2.0,4.0などの値を縦に表示する必要があります。 – Manoj273