Android’图表MPAndroidchart 的BarChart

如何给图表设置数据

  /*

        设置数据

        设置数据一共需要五个步骤

        Step1: 设置 List*/

        //使用BarEntry

        List<BarEntry> barEntries = new ArrayList<>();

        Integer[] ints = {23, 32, 45, 67, 89};

        for (int i = 0; i < ints.length; i++) {    //0-4

            BarEntry barEntry = new BarEntry(i+1,ints[i]);         //x,y

            barEntries.add(barEntry);

        }

        //Step2: 将 List 的对象放在 BarDataSet 里, 树状图的颜色就是在这里设置

       

       //BarDataSet

        BarDataSet set1 = new BarDataSet(barEntries, "the weather");

        //设置每个树状图的颜色,一共有两个方法setColors和setColor

        set1.setColor(getResources().getColor(android.R.color.holo_orange_dark));

        //Step3: 将 BarDataSet 的对象放在 List 里

 

        //IBarDataSet

        ArrayList<IBarDataSet> barDataSets = new ArrayList<>();

        barDataSets.add(set1);

         //BarData

        //Step4: List 的数据放在 BarData 里

        BarData barData = new BarData(barDataSets);

        //设置树状图的宽度

        barData.setBarWidth(0.5f);

        //设置树状图上的字的字号

        barData.setValueTextSize(10);

        //Step5: 将 BarData 的数据放在 BarChart 上

        barChart.setData(barData);

设置完数据之后,我们肯定还可以对图表进行一些简单的操作

 barChart = (BarChart) findViewById(R.id.barchart);

        //描述,默认在右下角

        Description descirption = new Description();

        descirption.setText("这是一坨翔");

        descirption.setTextColor(Color.parseColor("#000000"));

        descirption.setTextSize(19);

        barChart.setDescription(descirption);

        //设置是否可以拖拽

        barChart.setDragEnabled(false);

        //是否能够缩放

        barChart.setScaleEnabled(false);

        //是否允许x轴缩放

        barChart.setScaleEnabled(false);

        //设置显示的动画,BarChart的动画

        //barChart.setAnimation();

        //如果柱状超过设置的个数,则隐藏树状图上的值

        barChart.setMaxVisibleValueCount(10);

        //x轴的操作

        //取到x轴的操作

        XAxis xAxis = barChart.getXAxis();

        //是否显示X轴的线(与X轴垂直的线),默认为true

        xAxis.setDrawGridLines(false);

        //设置XAxis坐标的字在哪里显示 XAxisPosition{ TOP, BOTTOM, BOTH_SIDED, TOP_INSIDE, BOTTOM_INSIDE}

        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);

        //设置X轴的值的间隔,具体不同看下面的图

        xAxis.setGranularity(1f);

        //设置X轴的值的个数

        xAxis.setLabelCount(5);

        //y轴的操作

        //得到左侧Y轴的实例

        YAxis leftYaxis = barChart.getAxisLeft();

        //设置y轴的线(与y轴垂直的线的宽)

        //leftYaxis.setGridLineWidth(Utils.convertDpToPixel(1));

        leftYaxis.setGridLineWidth(0);

        //设置Y轴的值的个数,默认为6个,最小为2个,最大为25个。第二个参数 如果启用,集标签数量将被强制,即标签的准确计数指定将绘制且分布均匀沿着轴 – 这可能导致标签有不均匀值

        leftYaxis.setLabelCount(5, false);

        //设置Y轴的起点值

        //leftYaxis.setAxisMinValue(0f);

        //设置将在全范围的百分比顶轴的空间。默认10F.设置在图表上最高处的值相比轴上最高值的顶端空间(总轴范围的百分比)最大值和最高值的百分比 设置为100,则最高值为最大值的1倍

        //leftYaxis.setSpaceTop(15f);

        /*

        设置数据

        设置数据一共需要五个步骤

        Step1: 设置 List*/

        //使用BarEntry

        List<BarEntry> barEntries = new ArrayList<>();

        Integer[] ints = {23, 32, 45, 67, 89};

        for (int i = 0; i < ints.length; i++) {    //0-4

            BarEntry barEntry = new BarEntry(i+1,ints[i]);

            barEntries.add(barEntry);

        }

        //Step2: 将 List 的对象放在 BarDataSet 里, 树状图的颜色就是在这里设置的

        BarDataSet set1 = new BarDataSet(barEntries, "the weather");

        //设置每个树状图的颜色,一共有两个方法setColors和setColor

        set1.setColor(getResources().getColor(android.R.color.holo_orange_dark));

        //Step3: 将 BarDataSet 的对象放在 List 里

        ArrayList<IBarDataSet> barDataSets = new ArrayList<>();

        barDataSets.add(set1);

        //Step4: List 的数据放在 BarData 里

        BarData barData = new BarData(barDataSets);

        //设置树状图的宽度

        barData.setBarWidth(0.5f);

        //设置树状图上的字的字号

        barData.setValueTextSize(10);

        //Step5: 将 BarData 的数据放在 BarChart 上

        barChart.setData(barData);

设置多条柱状图的格式,但是这里的值要换一下,毕竟同样的值会被掩盖

 //三个柱状

        entries1.add(new BarEntry(1f, 0));

        entries1.add(new BarEntry(2f, 1));

        entries1.add(new BarEntry(3f, 2));

        entries1.add(new BarEntry(4f, 3));

        entries1.add(new BarEntry(5f, 4));

        entries1.add(new BarEntry(6f, 5));

        entries1.add(new BarEntry(7f, 6));

        entries1.add(new BarEntry(8f, 7));

        entries1.add(new BarEntry(9f, 8));

        entries1.add(new BarEntry(10f, 9));

        entries1.add(new BarEntry(11f, 10));

        entries1.add(new BarEntry(12f, 11));

      entries2.add(new BarEntry(1f, 0));

        entries2.add(new BarEntry(2f, 1));

        entries2.add(new BarEntry(3f, 2));

        entries2.add(new BarEntry(4f, 3));

        entries2.add(new BarEntry(5f, 4));

        entries2.add(new BarEntry(6f, 5));

        entries2.add(new BarEntry(7f, 6));

        entries2.add(new BarEntry(8f, 7));

        entries2.add(new BarEntry(9f, 8));

        entries2.add(new BarEntry(10f, 9));

        entries2.add(new BarEntry(11f, 10));

        entries2.add(new BarEntry(12f, 11));

        entries3.add(new BarEntry(1f, 0));

        entries3.add(new BarEntry(2f, 1));

        entries3.add(new BarEntry(3f, 2));

        entries3.add(new BarEntry(4f, 3));

        entries3.add(new BarEntry(5f, 4));

        entries3.add(new BarEntry(6f, 5));

        entries3.add(new BarEntry(7f, 6));

        entries3.add(new BarEntry(8f, 7));

        entries3.add(new BarEntry(9f, 8));

        entries3.add(new BarEntry(10f, 9));

        entries3.add(new BarEntry(11f, 10));

        entries3.add(new BarEntry(12f, 11));

        //设置显示图形和文字,并且设置颜色

        dataset = new BarDataSet(entries1, "甲");

        dataset.setColor(Color.rgb(255, 48, 48));

      dataset2 = new BarDataSet(entries2, "乙");

        dataset2.setColor(Color.rgb(0, 191, 255));

         dataset3 = new BarDataSet(entries3, "丙");

        dataset3.setColor(Color.rgb(255, 215, 0));

        ArrayList<IBarDataSet> ibarDataSet = new ArrayList<>();

        ibarDataSet.add(dataset);

        ibarDataSet.add(dataset2);

        ibarDataSet.add(dataset3);

        BarData data3 = new BarData(ibarDataSet);

        barChart.setData(data3);

        barChart.animateY(2000);//动画效果 y轴方向,2秒

  //下面再来一个设置数据的小例子

  barChart = (BarChart) findViewById(R.id.barchart);

        //处理数据

        //1这些事数据,使用BarEntry

        ArrayList<BarEntry> barEntries = new ArrayList<>();

        barEntries.add(new BarEntry(1,10));             

        barEntries.add(new BarEntry(2,20));

        barEntries.add(new BarEntry(3,30));

        //2对这些数据的设置

        BarDataSet barDataSet = new BarDataSet(barEntries,"这些数据的描述");

        //3通过这个集合,可以设置多组数据

        ArrayList<IBarDataSet> iBarDataSets = new ArrayList<>();            

        iBarDataSets.add(barDataSet);

        //4给多组数据进行一些设置

        BarData barData = new BarData(iBarDataSets);

        barData.setBarWidth(0.5f);

        barData.setValueTextColor(Color.BLACK);

        //设置数据

        barChart.setData(barData);

最后一个列子

参考博客http://blog.csdn.net/github_33304260/article/details/51272078

package com.ityingli.www.mpandroidcharbarchat;

import android.graphics.Color;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import com.github.mikephil.charting.charts.BarChart;

import com.github.mikephil.charting.components.Description;

import com.github.mikephil.charting.data.BarData;

import com.github.mikephil.charting.data.BarDataSet;

import com.github.mikephil.charting.data.BarEntry;

import com.github.mikephil.charting.interfaces.datasets.IBarDataSet;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    private BarChart barChart;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        barChart = (BarChart) findViewById(R.id.barchart);

        //这里使用两个方法,一个控制数据,一个控制视图

        BarData barData = setInitData();

        //设置图表的属性

        setBarData(barData);

    }

    private void setBarData(BarData barData) {

        barChart.setData(barData);

        barChart.setDrawBorders(true);   //设置图标是否要边框,当然也可以设置边框的颜色大少等、

        Description  description = new Description();

        description.setText("");

        barChart.setDescription(description);   //设置不要描述

        barChart.setDrawGridBackground(true);    //是否显示表格颜色

        barChart.setGridBackgroundColor(Color.RED);   //设置红色

        barChart.setTouchEnabled(false); // 设置是否可以触摸

        barChart.setDragEnabled(false);// 是否可以拖拽

        barChart.setScaleEnabled(false);// 是否可以缩放

        barChart.setPinchZoom(false);//y轴的值是否跟随图表变换缩放;如果禁止,y轴的值会跟随图表变换缩放

 //       barChart.setBackgroundColor(Color.BLACK);// 设置整个图表控件的背景

 //       barChart.setDrawBarShadow(true);//柱状图没有数据的部分是否显示阴影效果

 //       barChart.setDrawValueAboveBar(false);//柱状图上面的数值是否在柱子上面

        //是否显示竖直标尺线

        barChart.getXAxis().setDrawGridLines(false);

        //设置横坐标之间的间隔距离 float值

 //       barChart.getXAxis().setSpaceMax(50);

        //右侧是否显示Y轴数值

        barChart.getAxisRight().setDrawLabels(false);

        //是否显示最右侧竖线

        barChart.getAxisRight().setEnabled(false);

       

    }

    //初始化数据

    private BarData setInitData() {

        ArrayList<String> xValues = new ArrayList<>();

        for(int i =0 ;i<24;i++){

            xValues.add(i+"");

        }

        ArrayList<BarEntry> barentryS = new ArrayList<>();

        for(int i = 0 ; i<24;i++){

            barentryS.add(new BarEntry(i,(float)(Math.random()*10)+3));

        }

        BarDataSet barDataSet = new BarDataSet(barentryS,"测试数据");

        ArrayList<IBarDataSet> iBarDataSet = new ArrayList<>();

        iBarDataSet.add(barDataSet);

        BarData barData = new BarData(iBarDataSet);

        //barChart.setData(barData);

        return  barData;

    }

}

Published by

风君子

独自遨游何稽首 揭天掀地慰生平