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修改标签数值.比如数值太小转成科学计数法或者截取到几位等等

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,594评论 18 139
  • 文章转载自:https://github.com/tuteng/MPAndroidCharthttps://git...
    no白菜阅读 5,098评论 0 8
  • 开始 ####安装 为了使用 LineChart, BarChart, ScatterChart, CandleS...
    帅气的猪猪阅读 8,429评论 0 1
  • 图表控件库 MPAndroidChart 的使用 使用方法 项目源码地址,包含了很多类型的图标 https://g...
    jinchuang阅读 813评论 0 0
  • 岁月静好是骗人的,岁月磨平了许多东西,包括你对我的爱。 当初的我们一点点的计划未来,谈论着房子孩子车子,而现在我们...
    商祺阅读 333评论 0 1