MPAndroidChart之lineChart中的诡异属性

来源:互联网 发布:国外的知乎quora 编辑:程序博客网 时间:2024/05/16 09:38

网上有很多linechart折线图的例子,但都是千遍一律。

有一些效果,根本就没有例子。之前做到一个项目,用到的一些效果,在这补充一下。

先上图:


1.同一图中,两条折线,根据不同的Y轴坐标画出效果。

因为之前对mpandroidChart不熟悉,搜索了很多资料,都是千遍一律的统一效果,右边坐标值不是和左边一样就是不显示。

但,项目中要这样的效果,怎么办?又没找到完整的API文档,只能根据方法名分析源码(当然,可能是我比较笨,没找到好方法,也许你可以有更好方法。)。

最后,找到了解决的方法:


两条线,相同的X轴,那么X轴的DATA肯定是相同,不同的Y轴数据,两个LineDataSet。那么关键的一个属性设置来了,它就是让Y轴左右两边显示两级不同的value关键,就是红色框内的setAxisDependency这个方法。默认情况下,两边都显示左边Y轴数据,而方法设置为AxisDependency.RIGHT就把Y轴左右显示不同数据的功能解决了。 


2.高亮坐标线的显示隐藏。如图:


红框中的高亮显示线,客户说看起来很碍眼,不显示。

初恋(客户)的要求,当然要满足了,于是,又去找这个高亮线是个什么玩意(在找到之前不知道它叫什么)?

最后,找到了它的名字--HighLight。总是有个惯性思维,觉得高亮线肯定是LineChart的属性,结果,它是LineDataSet的娃。有种被绿的感觉。

找到了它,那就直接设置它不可见就可以了吧。然后,找到了setHighlightEnabled 这个方法,默认属性为true,给它个false就肯定O了。结果,图中的MarkView就无法显示了,因为没办法点击图中的chart value节点。这是什么鬼?说好的,只是设置高亮线,怎么整个图都失去触发事件了?此法行不通,得,你是大爷,我绕着走,行吧。

接着,找到另一个方法:setHighLightColor,想想,不可见是吧,我把你设置成透明的Color.TRANSPARENT,这样就可以了吧。果然,它,不见了。再次想对这些个不走寻常路的API作者说声:打死你个龟孙儿!


3.MarkView的样式自定义。


这个就没什么多讲的了,因为默认的太丑,还不能达到要求,只能自定义。继承MarkerView,给它一个自定义布局。就OK了。markview显示的位置坐标,重写图中的对应方法就OK了。值的格式化显示,在setOnChartValueSelectedListener中处理就可。


4.关于Y轴坐标线显示的对应关系。


一般情况下,有几个chart  value就显示几个Y轴坐标线,但有时,chart value太多,显示宽度有限时,有些Y轴坐标线就不会显示出来,此时,我们可以设置它的一个属性,让Y轴的线与char value一对一的全部显示出来:setSpaceBetweenLabels(1)。

此方法说明如下:

Sets the space (in characters) that should be left out between the x-axis labels, default 4. This only applies if the number of labels that will be skipped in between drawn axis labels is not custom set.

英语不好,就不做翻译了。


综上,发现这个框架有从实现上来说,有很多的局限性,当然,不只针对LineChart,并且,里面的方法及属性的理解和调用,不能以一般性思维来考虑。总之,想找到对应的功能API,真是太难了(个人使用后的感觉)。下次,我再来谈谈饼状图中,出现的离奇的API及功能。

2 0
原创粉丝点击