MPAndroidChart个人使用总结(一)

最新项目当中使用到了MPAndroidChart这个三方库用来绘制相关的图标.该库能力确实十分强大,但是使用过程中缺遇到了很多坑,该库在3.0版本进行了一次较大的改动,相对于2.x的版本很多用法都发生了变化.本人使用的是3.03版本,所以内容以3.03版本的API为准.项目当中主要使用到了折线图,蜡烛图,饼状图以及组合图,会针对这几个图表进行一些整理.

首先po一下MPAndroidChart的Git地址 : MPAndroidChart,以及对用的JavaDocs文档 : MPAndroidChartJavaDocs

通过JavaDocs可以大致看出来该库主要分为几大类:

1,Chart:图表的基类,其子类则是我们在xml当中需要用到的各种线段图控件.例如LineChart(折线图),BarChart(柱状图),CandleChart(蜡烛图),CombinedChart(组合图)….

2,ChartData:图表数据的基类,其子类与Chart类的子类一一对应,为图表提供数据.例如LineData与LineChart对应,BarData与BarChart对应,CandleChart与CandleData对应.用来添加DataSet.

3,BaseDataSet:图表数据设置的基类.其子类与上述的规则雷同,例如LineDataSet.用来添加Entry,并且可以对该图表中的数据进行一系列的设置.

4,BaseEntry:其子类是真正用来添加数据的类.规则也与之前的类似.唯一不同的是折线图的Entry直接使用Entry.不同的图标Entry需要添加的参数不同

通过这4个类,我们得出一个最基本的信息,不考虑其他效果,交互,仅仅使用最基本的展示图表的时候,其用法如下(伪代码):

折线图为例:

ArrayList<Entry> lineEntries = new ArrayList<>();

//这里需要特殊说明,3.0版本的用法与2.x版本较大的不同在这里,2.x版本需要单独定义一个存放x坐标的集合,而3.0版本只要直接传入即可

lineEntries.add(new Entry(x坐标点,实际的数据));      

LineDataSet lineDataSet = new LineDataSet(lineEntries,”line”)    //第二个参数相当于该Set的标记,自定义

LineData  lineData = new LineData(lineDataSet);

LineChart.setData(lineData);

当然,很多时候我们的需求不仅仅是单纯的展示,还需要有一些列的设置,那么我们还可以从JavaDocs中找到很多的设置

1,Chart类的一些设置: 每个图表都可以通过相对应的设置开启或关闭一些交互以及显示,列举一些常用的

 //是否可以缩放

setScaleEnabled(true);

//是否绘制边框

setDrawBorders(true);     

//边框的宽度

setBorderWith(1);

//边框的颜色

setBorderColor(#000000);

//是否可以拖动

setDragEnabled(true);

//Y轴是否可以缩放

setScaleYEnabled(false);

//是否启用Y轴自动缩放

setAutoScaleMinMaxEnabled(true);

//是否持续滚动

setDragDecelerationEnabled(false);

//是否双击缩放

setDoubleTapToZoomEnabled(false)

//没有加载到数据时文字显示

setNoDataText(” “)

//没有加载到数据时文字颜色

setNoDataTextColor(#000000)

还可以通过getDescription()和getLegend()得到描述对象和图例对象的实例.并且通过Description和Legend自身的API设置图表的描述信息和图例.这个不再图表类的API当中,之后拿出来单独说

2.DateSet类的一些设置: 每一种图表的DateSet都有对于该图表设置的特殊API,以下已LineDataSet,CandleDataSet,BarDataSet为例.

通用:

    //是否显示数据集的数值        

    setDrawValues(false); 

    //设置高亮线的颜色,就是点击或者长按出现的线        

    setHighLightColor(#FFFFFF);  

    //是否允许高亮线显示

    setHighlightEnabled(false);

LIneDataSet :

    //设置折线图折线的宽度

    setLineWidth();

    //设置折线的样式    CUBIC_BEZIER:圆滑的直线,LINEAR:直线,HORIZONTAL_BEZIER:不是特别圆滑的直线,STEPPED:类似于柱状图的感觉   

    setMode(LineDAtaSet.Mode.CUBIC_BEZIER);

   //是否绘制两个点之间的圆点

    setDrawCircles(false);

    //线的颜色

    setColor(#FFFFFF);

    //是否填充数据集

    setDrawFilled(true);

    //设置填充的样式,可以自己通过shape去画一个

    setFillDrawable(drawable);

CandleDataSet:

    //设置open < close 的颜色. 也就是跌的颜色

    setDecreasingColor(#FFFFFF);

    //设置open > close的颜色, 也就是涨的颜色

    setIncreasingColor(#FFFFFF);

    //设置open == close的颜色. 这个有个坑,如果不设置该蜡烛图的位置是一片空白的

    setNeutralColor(#FFFFFF);

    //设置是否蜡烛图上下的线于该蜡烛图涨跌颜色相同

    setShadowColorSameAsCandle(true);

    //设置蜡烛图上下线的宽度

    setShadowWidth();

   //设置涨幅蜡烛图的样式(空心,实心)

    setDecreasingPaintStyle(Paint.Style.FILL);

    //设置跌幅蜡烛图的样式(空心,实心)    

     setIncreasingPaintStyle(Paint.Style.FILL);

    //设置数据集绘制对

    setAxisDependency(YAxis.AxisDependency.LEFT)

BarDataSet:    

    //设置柱状图数据集的颜色

    setColors(ArrayList);

3.x轴和y轴的一些设置.CharData类是对整个图表外部以及操作进行一些设置,DataSet类是对图表内容进行一些设置.那么自然也会有x轴y轴的设置.

x轴: x轴设置是通过Chart.getXAxis() 获得一个XAxis的实例,调用XAxis的实例进行一些对于x轴的设置

//是否允许x轴绘制

setDrawLabels(true);    如果设置为false,则所有的x轴设置都不起作用

//是否绘制x轴的轴线

setDrawAxisLine(false);

//是否绘制x轴边线

setDrawGridLines(false);

//设置x轴的最小偏移

setAxisMinimum(0.5f);

//设置x轴字体颜色

setTextColor();

//设置x轴字体大小

setTextSize()

//设置x轴的位置

setPosition(XAxis.XAxisPosition.BOTTOM); 

//设置x轴标签数量

setLabelCount(5,true);    如果不传第二个参数或者false则位置不会固定,传入true则位置固定

y轴: y轴分为左边和右边两个轴,通过getAxisLeft()和getAxisRight()获得对应的实例.基本设置的api与x轴雷同,举例几个能用上但是与x轴不太一样的

//这是y轴标签

setPosition(YAxis.YAxisLabelPosition.INSIDE_CHART); 可以传入两种参数,INSIDE在图表内部,OUTSIDE在外部

//是否允许最上边的标签绘制

setDrawTopYLabelEntry();

//自定义y轴标签数值

setValueFormatter(); 内部实现一个IAxisValueFormatter接口,可以通过里面对应的value修改标签数值.比如数值太小转成科学计数法或者截取到几位等等

一些基本设置就暂时写到这里,后续会记录一下个人遇到的一些难点

    原文作者:So_Why
    原文地址: https://www.jianshu.com/p/9746e2dd2fbe
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞