MPAndroidChart로 간단한 막대 그래프 만들기

요약



MPAndroidChart로 간단한 그래프를 만들고 싶다면,
기능이 충실한 덕분에 반대로 간단한 그래프를 만드는 것이 알기 어려웠다.
ver3.0.2가 되어 이전 버전과 조금 바뀌었다(x축의 라벨의 표시라든지…)

하고 싶었던 일



이런 느낌의 간단한 막대 그래프를 만들고 싶었다.


특히 이해하기 어려운 점



・x축에 라벨 표시
・그래프마다 임의의 색을 설정

방법


public class MainActivity extends AppCompatActivity {

    protected BarChart chart;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        chart = (BarChart) findViewById(R.id.chart1);

        //表示データ取得
        BarData data = new BarData(getBarData());
        chart.setData(data);

        //Y軸(左)
        YAxis left = chart.getAxisLeft();
        left.setAxisMinimum(0);
        left.setAxisMaximum(100);
        left.setLabelCount(5);
        left.setDrawTopYLabelEntry(true);
        //整数表示に
        left.setValueFormatter(new IAxisValueFormatter() {
            @Override
            public String getFormattedValue(float value, AxisBase axis) {
                return "" + (int)value;
            }
        });

        //Y軸(右)
        YAxis right = chart.getAxisRight();
        right.setDrawLabels(false);
        right.setDrawGridLines(false);
        right.setDrawZeroLine(true);
        right.setDrawTopYLabelEntry(true);

        //X軸
        XAxis xAxis = chart.getXAxis();
        //X軸に表示するLabelのリスト(最初の""は原点の位置)
        final String[] labels = {"","国語", "数学", "英語"};
                xAxis.setValueFormatter(new IndexAxisValueFormatter(labels));
        XAxis bottomAxis = chart.getXAxis();
        bottomAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        bottomAxis.setDrawLabels(true);
        bottomAxis.setDrawGridLines(false);
        bottomAxis.setDrawAxisLine(true);

        //グラフ上の表示
        chart.setDrawValueAboveBar(true);
        chart.getDescription().setEnabled(false);
        chart.setClickable(false);

        //凡例
        chart.getLegend().setEnabled(false);

        chart.setScaleEnabled(false);
        //アニメーション
        chart.animateY(1200, Easing.EasingOption.Linear);
    }

    //棒グラフのデータを取得
    private List<IBarDataSet> getBarData(){
                //表示させるデータ
        ArrayList<BarEntry> entries = new ArrayList<>();
        entries.add(new BarEntry(1, 60));
        entries.add(new BarEntry(2, 80));
        entries.add(new BarEntry(3, 70));
        List<IBarDataSet> bars = new ArrayList<>();
        BarDataSet dataSet = new BarDataSet(entries, "bar");

        //整数で表示
        dataSet.setValueFormatter(new IValueFormatter() {
            @Override
            public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
                return "" + (int) value;
            }
        });
        //ハイライトさせない
        dataSet.setHighlightEnabled(false);

        //Barの色をセット
        dataSet.setColors(new int[]{R.color.material_blue, R.color.material_green, R.color.material_yellow}, this);
        bars.add(dataSet);

        return bars;
    }

}


x축에 라벨을 표시하려면 데이터의 x축에 표시되는 수치를 라벨로 변환하는 느낌.
그래프 마다 임의의 색을 설정은 데이터의 리스트에 색의 리스트를 세트 하는 것으로 실행 가능.
그 외, 디폴트라고 확대축소가 생기거나, 탭하면 하이라이트 되거나,
눈금이 많으면 많거나 조정하는데 상당히 여러가지 해야 했다.

참고
x 축에 레이블 (htps : // 기주 b. 코 m/P 히자 y/M 팬 d로이 d 짱 rt/이스에 s/2044)
그래프 당 색상 (h tps : // s t c ゔ ぇ rf ぉ w. 코 m / 쿠에 s 치온 s / 38872181 / m 팡 d 로이 d 짱 rt ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー

좋은 웹페이지 즐겨찾기