AndroidMPChart——BarChart

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Zhangshiting/article/details/83752404

AndroidMPChart的获取

依赖:

Project 的build.gradle文件中添加

allprojects {
    repositories {
        maven { url 'https://jitpack.io' }
    }
}


然后在 module中的build,gradle 中添加

implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'

布局文件:

 <com.github.mikephil.charting.charts.BarChart
                android:id="@+id/full_barChart"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                />

初始化BarChart:

  //清除历史设置
        barChart.clear();
        //无数据时的显示文本
        barChart.setNoDataText("暂无内容");
        //无数据时设置数据为空
        barChart.setData(null);
        //设置是否缩放
        barChart.setScaleEnabled(false);
        /*
        * 图表设置
        * */
        //背景颜色
        barChart.setBackgroundColor(Color.WHITE);
        //是否显示图表网格
        barChart.setDrawGridBackground(false);
        //是否显示背景阴影
        barChart.setDrawBarShadow(false);
        //设置是否高亮显示
        barChart.setHighlightFullBarEnabled(false);
        //设置是否显示描述
        barChart.getDescription().setEnabled(false);
        //设置是否显示边框
        barChart.setDrawBorders(false);
        //设置动画效果
        barChart.animateY(1000, Easing.EasingOption.Linear);
        barChart.animateX(1000, Easing.EasingOption.Linear);

        /*XY轴的设置*/
        //x轴设置显示位置在底部
        XAxis xAxis = barChart.getXAxis();
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        //第一个参数是X轴坐标的个数,第二个参数是 是否不均匀分布,true是不均匀分布
        xAxis.setLabelCount(2, false);
        //不显示网格线
        xAxis.setDrawGridLines(false);
        //不显示轴线
        xAxis.setDrawAxisLine(false);
        //设置为true当一个页面显示条目过多,X轴值隔一个显示一个
        xAxis.setGranularityEnabled(true);
        //设置最小间隔,防止当放大时,出现重复标签。
        xAxis.setGranularity(1f);
        //设置滑动
        //一个界面最少显示多少个点
        barChart.setVisibleXRangeMinimum(0);
        //一个界面最大显示多少个点,其余滑动显示
        barChart.setVisibleXRangeMaximum(6);

        //自定义x轴标签
        xAxis.setValueFormatter(new IAxisValueFormatter() {
            @Override
            public String getFormattedValue(float value, AxisBase axis) {
                return "";
            }
        });

        //y轴
        //左y轴
        YAxis leftAxis = barChart.getAxisLeft();
        //右y轴
        YAxis rightAxis = barChart.getAxisRight();
        //保证Y轴从0开始,不然会上移一点
        leftAxis.setAxisMinimum(0f);
        //设置右y轴是否显示
        rightAxis.setEnabled(false);
        //是否显示y坐标轴上的刻度竖线,默认是true
        leftAxis.setDrawAxisLine(false);
        //设置为true当一个页面显示条目过多,X轴值隔一个显示一个
        leftAxis.setGranularityEnabled(true);
        //设置最小间隔,防止当放大时,出现重复标签。
        leftAxis.setGranularity(1f);
        //设置y轴显示最大标签数
        leftAxis.setAxisMaximum(6);
        //第一个参数是X轴坐标的个数,第二个参数是 是否不均匀分布,true是不均匀分布
        leftAxis.setLabelCount(leftYLable, false);



        /*折线图例  标签   设置*/
        Legend legend = barChart.getLegend();
        legend = barChart.getLegend();
        //图例样式
        legend.setForm(Legend.LegendForm.NONE);
        //图例文本大小
        legend.setTextSize(12f);
        //图例文本颜色
        legend.setTextColor(Color.BLACK);
        //显示位置
        //垂直时位置
        legend.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM);
        //水平时位置
        legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT);
        //方向
        legend.setOrientation(Legend.LegendOrientation.HORIZONTAL);

        //是否绘制在图表里面
        legend.setDrawInside(false);

设置数据:

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

        BarEntry barEntry = null;// 数据结构
        BarDataSet barDataSet = null;// 代表一个柱状图

        for (int i = 0; i < list.size; i++) {


            /**
             * 此处还可插入Drawable对象,barEntry(float x, float y,Drawable icon)
             * 即可设置柱状图顶部的icon展示
             * */
            VtDateValueBean vtDateValueBean = list.get(i);//获取点对象
            float preValue = Float.parseFloat(vtDateValueBean.getPreValue());//获取y轴

            barEntry = new BarEntry(i, preValue);
            entries.add(barEntry);
        }


        //每一个BarDataSet代表一类柱状图
        barDataSet = new BarDataSet(entries, "柱状图");

        //设置柱状图颜色 (不同颜色)
        barDataSet.setColors(colorlist);
        //设置柱状图颜色  (统一颜色)
        barDataSet.setColor(Color.BLACK);
        //设置图例宽度
        barDataSet.setFormLineWidth(1f);
        //设置图例大小
        barDataSet.setFormSize(15.f);
        //不显示柱状图顶部值
        barDataSet.setDrawValues(true);
        //设置顶部值字体大小
        barDataSet.setValueTextSize(11f);
        //设置顶部值字体颜色  (不同颜色)
        barDataSet.setValueTextColors(colorlist);
        //设置顶部值字体颜色 (统一颜色)
        barDataSet.setValueTextColor(Color.BLACK);
        barDataSet.setHighlightEnabled(false);

//            //添加多个BarDataSet时
//            ArrayList<IBarDataSet> dataSets=new ArrayList<>();
//            dataSets.add(barDataSet);
//            BarData data = new BarData(dataSets);

        BarData bardata = new BarData(barDataSet);
        // 格式化显示
        bardata.setValueFormatter(new IValueFormatter() {
            @Override
            public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
                DecimalFormat fnum = new DecimalFormat("##0.00");
                return fnum.format(value);
            }
        });


        //设置柱体宽度
        bardata.setBarWidth(0.08f);
       

        //设置数据
        barChart.setData(bardata);

        barChart.invalidate();

猜你喜欢

转载自blog.csdn.net/Zhangshiting/article/details/83752404