MPAndroidChart 实现单/多圆柱行数据

  记录一下最近开发中晕倒的一些小功能

   MPAndroidChart 可以实现圆柱图、线性图、饼状图、散列图等等

   下面看看具体的实现:

  1.在Android studio中添加依赖

dependencies {
    compile 'com.github.PhilJay:MPAndroidChart:v2.1.6'

}
  2.在layout中添加布局

<com.github.mikephil.charting.charts.BarChart
    android:layout_marginBottom="@dimen/max_margin_20"
    android:layout_marginLeft="40dp"
    android:layout_marginRight="40dp"
    android:layout_marginTop="10dp"
    android:layout_width="match_parent"
    android:layout_height="360dp"
    android:id="@+id/barchart">

</com.github.mikephil.charting.charts.BarChart>

  4.代码中实现圆柱功能

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_inventory_analysis);
    mBarChart = (BarChart) findViewById(R.id.barchart); 
    mBarData = getBarData();
    showBarChart(mBarChart, mBarData);
}
  private void showBarChart(BarChart barChart, BarData barData) {
        barChart.setDrawBorders(false);  ////是否在折线图上添加边框

        barChart.setDescription("");// 数据描述

        // 如果没有数据的时候,会显示这个,类似ListView的EmptyView
        barChart.setNoDataTextDescription("You need to provide data for the chart.");

        barChart.setDrawGridBackground(false); // 是否显示表格颜色
        barChart.setTouchEnabled(true); // 设置是否可以触摸
        barChart.setDragEnabled(true);// 是否可以拖拽
        barChart.setScaleEnabled(true);// 是否可以缩放
        barChart.setPinchZoom(false);//
        barChart.setDrawBarShadow(false);
        barChart.setData(barData); // 设置数据
        Legend mLegend = barChart.getLegend(); // 设置比例图标示
        mLegend.setForm(Legend.LegendForm.CIRCLE);// 样式
        mLegend.setFormSize(20f);// 字体
        mLegend.setTextColor(Color.BLACK);// 颜色
//      X轴设定
        XAxis xAxis = barChart.getXAxis();
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        //是否设置表格线
        xAxis.setDrawGridLines(false);
        barChart.animateX(1000); // 立即执行的动画,x轴
    }

    //x轴数据
    private BarData getBarData() {
        ArrayList<String> xValues = new ArrayList<String>();
        xValues.add("周日");
        xValues.add("周一");
        xValues.add("周二");
        xValues.add("周三");
        xValues.add("周四");
        xValues.add("周五");
        xValues.add("周六");

        //y轴数据
        ArrayList<BarEntry> yValues1 = new ArrayList<BarEntry>();
        yValues1.add(new BarEntry(Float.parseFloat(listbean.get(0).getDay6()), 0));
        yValues1.add(new BarEntry(23, 1));
        yValues1.add(new BarEntry(Float.parseFloat(listbean.get(0).getDay1()), 2));
        yValues1.add(new BarEntry(Float.parseFloat(listbean.get(0).getDay2()), 3));
        yValues1.add(new BarEntry(Float.parseFloat(listbean.get(0).getDay3()), 4));
        yValues1.add(new BarEntry(Float.parseFloat(listbean.get(0).getDay4()), 5));
        yValues1.add(new BarEntry(Float.parseFloat(listbean.get(0).getDay5()), 6));
        // y轴的数据集合
        BarDataSet barDataSet1 = new BarDataSet(yValues1, listbean.get(0).getCategory());
        barDataSet1.setColor(Color.RED);

        ArrayList<BarEntry> yValues2 = new ArrayList<BarEntry>();
        yValues2.add(new BarEntry(Float.parseFloat(listbean.get(1).getDay6()), 0));
        yValues2.add(new BarEntry(45, 1));
        yValues2.add(new BarEntry(Float.parseFloat(listbean.get(1).getDay1()), 2));
        yValues2.add(new BarEntry(Float.parseFloat(listbean.get(1).getDay2()), 3));
        yValues2.add(new BarEntry(Float.parseFloat(listbean.get(1).getDay3()), 4));
        yValues2.add(new BarEntry(Float.parseFloat(listbean.get(1).getDay4()), 5));
        yValues2.add(new BarEntry(Float.parseFloat(listbean.get(1).getDay5()), 6));
        BarDataSet barDataSet2 = new BarDataSet(yValues2, listbean.get(1).getCategory());
        barDataSet2.setColor(Color.BLUE);

        ArrayList<BarEntry> yValues3 = new ArrayList<BarEntry>();
        yValues3.add(new BarEntry(Float.parseFloat(listbean.get(2).getDay6()), 0));
        yValues3.add(new BarEntry(12, 1));
        yValues3.add(new BarEntry(Float.parseFloat(listbean.get(2).getDay1()), 2));
        yValues3.add(new BarEntry(Float.parseFloat(listbean.get(2).getDay2()), 3));
        yValues3.add(new BarEntry(Float.parseFloat(listbean.get(2).getDay3()), 4));
        yValues3.add(new BarEntry(Float.parseFloat(listbean.get(2).getDay4()), 5));
        yValues3.add(new BarEntry(Float.parseFloat(listbean.get(2).getDay5()), 6));
        BarDataSet barDataSet3 = new BarDataSet(yValues3, listbean.get(2).getCategory());
        barDataSet3.setColor(Color.YELLOW);

        ArrayList<BarEntry> yValues4 = new ArrayList<BarEntry>();
        yValues4.add(new BarEntry(2, 0));
        yValues4.add(new BarEntry(63, 1));
        yValues4.add(new BarEntry(34, 2));
        yValues4.add(new BarEntry(75, 3));
        yValues4.add(new BarEntry(8, 4));
        yValues4.add(new BarEntry(31, 5));
        yValues4.add(new BarEntry(15, 6));
        BarDataSet barDataSet4 = new BarDataSet(yValues4, "男士凉鞋");
        barDataSet4.setColor(Color.GRAY);

        barDataSet1.setBarSpacePercent(20f);
        barDataSet2.setBarSpacePercent(20f);
        barDataSet3.setBarSpacePercent(20f);
        barDataSet4.setBarSpacePercent(20f);

        ArrayList<BarDataSet> barDataSets = new ArrayList<BarDataSet>();
        barDataSets.add(barDataSet1); // add the datasets
        barDataSets.add(barDataSet2); // add the datasets
        barDataSets.add(barDataSet3); // add the datasets
        barDataSets.add(barDataSet4); // add the datasets


        BarData barData = new BarData(xValues, barDataSets);

        return barData;
    }


  5.最后实现的是这样的一种情况 


    6.开发的时候种类比较多在一张图上显示的密密麻麻,并且种类是动态的,不固定,所以后面用了listview加上MPAndroidChart最后的效果是这样的




阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011056653/article/details/73162895
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭