2017-12-28 8 views

答えて

0

まず、あなたのデータのためのドロー値を有効

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(); 

結果

enter image description here

+0

はい。私は自分のコードで両方の行を使用しましたが、その値をバーに垂直に表示したいとします。 – Manoj273

+0

画像を参照してください..あなたはこの結果を望んでいませんか? – amarok

+0

はい、正しいですが、私の場合は4〜5桁の長さなので、2.0,4.0などの値を縦に表示する必要があります。 – Manoj273

関連する問題