美文网首页Android精选
MPAndroidChart个人使用总结(一)

MPAndroidChart个人使用总结(一)

作者: So_Why | 来源:发表于2018-11-15 15:30 被阅读68次

    最新项目当中使用到了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修改标签数值.比如数值太小转成科学计数法或者截取到几位等等

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

    相关文章

      网友评论

        本文标题:MPAndroidChart个人使用总结(一)

        本文链接:https://www.haomeiwen.com/subject/ozldwftx.html