前言:最近在学习MPAndroidChart动态绘制折线图其中有一功能是根据y轴的值不同而显示不同颜色的折线点,由于不知道图表的底层绘制流程走了很多弯路,最后真是山重水尽疑无路*******,好,不扯了,进入正题我的方法有可能不是最好了解决方案,但是效果是绝对抹油问题的。有兴趣的童靴可以参考一下。

setCircleColors方法

在LineDataSet类中,使用setCircleColors()设置折线中设置X点对应点的颜色,其方法通过重载可以传递的参数类型有

List<Integer>、int... colors、int[] colors, Context c

如果是静态数据使用此方法没有一点问题,如果是动态数据需要动态更新数据的话就要不好使,在第一次加载完折线数据后更新时无论怎么setCircleColors改变它的值都没有任何效果。其原因就在于getCircleColor(int index)方法只有在第一次创建加载LineDataSet时才会执行一次,再向LineDataSet更新改变颜色数据时则不会再执行getCircleColor(int index)方法,会以第一次设置加载的颜色为准。知道原因后我修改了代码如下

注:getCircleColor(int index)方法的作用是根据index的值获取颜色集合中相对应位置上的颜色值。

关键代码

private void setData() {ArrayList<Entry> values = new ArrayList<Entry>();ArrayList<Integer> colors = new ArrayList<Integer>();for (int i = 0; i < yList.size(); i++) {float val = yList.get(i);values.add(new Entry(i, val));}mChart.getXAxis().setLabelCount(yList.size(),false);mChart.getXAxis().setValueFormatter(new IAxisValueFormatter() {@Overridepublic String getFormattedValue(float value, AxisBase axis) {return xStringList.get((int) value);}});LineDataSet set1;/**************判断图中是否已有LineDataSet,如果有就删除,重新创建加载****************/if (mChart.getData() != null &&mChart.getData().getDataSetCount() > 0) {mChart.getData().removeDataSet(0);}// create a dataset and give it a typeset1 = new LineDataSet(values, "");set1.setDrawIcons(false);set1.setColor(Color.BLACK);/******************************///循环判断y值,并向颜色集合中添加对应的颜色for (int i = 0; i < yList.size(); i++) {if (yList.get(i)>200) colors.add(Color.RED);else colors.add(Color.GREEN);}set1.setCircleColors(colors);/******************************/set1.setLineWidth(1f);set1.setCircleRadius(5f);set1.setDrawCircleHole(false);set1.setValueTextSize(12f);set1.setDrawFilled(false);set1.setFormLineWidth(1f);set1.setFormSize(15.f);ArrayList<ILineDataSet> dataSets = new ArrayList<ILineDataSet>();dataSets.add(set1); // add the datasets// create a data object with the datasetsLineData data = new LineData(dataSets);// set data/**************设置数据,并移动到最新点的位置****************/mChart.setData(data);mChart.moveViewToX(set1.getEntryCount()-1);/******************************/}

最后看一下效果吧

到此结束,希望会对有缘人有所帮助,如果有任何问题都可以在下方评论提问哦!

MPAndroidChart 折线图动态设置不同折点的颜色相关推荐

  1. echarts折线图堆叠怎么设置_ECharts折线图堆叠设置为不堆叠的方法

    下图是ECharts折线图堆叠的官方源码,设置折线图不堆叠只需要将每一个stack的值设置为不一样的名称或者将stack属性删除即可. option = { title: { text: '折线图堆叠 ...

  2. matplotlib.pyplot常用画图方式函数封装(一)——.plot绘制折线图及设置坐标轴箭头完美解决

    matplotlib.pyplot常用画图方式函数封装(一)--.plot绘制折线图及设置坐标轴箭头完美解决 py.plot常见绘图设置函数封装 绘制函数图像(完美解决坐标轴添加箭头) 绘制折线图 p ...

  3. echart 折线从左到右动画效果_echarts多条折线图动态分层的实现方法

    1.关于Echarts 大家可以到这个网址看一下,还是比较详细的. 这个功能还是很强大的,对于喜欢做数据统计来说是美味的. 2.echarts多条折线图动态分层 var xData = param.x ...

  4. Echarts折线图属性设置大全

    Echarts折线图属性设置大全 var option = {backgroundColor: '#FFF0F5',title: {text: '折线图',subtext: '模拟数据',x: 'ce ...

  5. Python可视化:绘制折线图、设置线条形状和marker样式

    绘制折线图.设置线条形状和marker样式 Python可视化:绘制折线图.设置线条形状和marker样式 修改线形:线形可选集合 修改marker:marker可选集合 Python可视化:绘制折线 ...

  6. echarts切换折线图变大_Echarts折线图属性设置大全

    Echarts折线图属性设置大全 var option = { backgroundColor: '#FFF0F5', title: { text: '折线图', subtext: '模拟数据', x ...

  7. 3种前端动态设置纯色图标的颜色的方法

    在开发中,我们需要实现动态切换全局主题色,对于文字颜色或者背景都很好实现,但是页面中经常会有很多小图标,也需要根据主题色进行切换. 这篇文章主要介绍3种最常用的实现方法. 1.使用svg图,通过更改p ...

  8. wpf 动态设置textblock的字体颜色

    动态设置textblock的字体颜色 <TextBlock HorizontalAlignment="Center" VerticalAlignment="Cent ...

  9. 为什么有时动态设置 View 的背景颜色 BackgroundColor 无效?

    项目场景: 为什么有时动态设置 View 的背景颜色 BackgroundColor 无效,不少新手是不是遇到过这个问题呢 问题描述: 前几天朋友问了我一个问题,他直接在activity里动态设置 V ...

最新文章

  1. 什么叫取反_转载:CodeReview正确的姿势是什么?
  2. 调用webservice 设置超时时间
  3. 学会这几招让 Go 程序自己监控自己
  4. 12 月份 10 个新鲜的 jQuery 插件和教程
  5. 对刚接触oracle的人比较有用的一些工具 zt
  6. 微软斥资 260 亿美元收购了 LinkedIn 后却无所作为?
  7. 动态为GridView控件创建列
  8. matlab2c使用c++实现matlab函数系列教程-rot90函数
  9. [转载] python学习笔记(三)- numpy基础:array及matrix详解
  10. SQL server 表数据改变触发发送邮件
  11. 前端最佳实践(一)——DOM操作
  12. 网上零食销售系统(Java;JSP;JDBC)附源码+数据库+论文
  13. Java文件上传之断点续传解决方案
  14. Netscreen的岁月 from Sina
  15. img写盘工具安装Linux,USB Image Tool:Windows下的直接写盘利器 【开源硬件佳软介绍 #2】...
  16. syncnavigator关于win10、win8系统无法注册机进行激活的问题
  17. 第七届山东理工大学ACM趣味编程循环赛 Round#2 sdut4120 城堡问题
  18. python-django前端传递数据的三种格式_CBV源码分析_django模板语法
  19. ARC093 F Dark Horse——容斥
  20. 5g多卡聚合路由器/5g多卡汇聚路由器,多网融合,弱网通信,多卡聚合路由器,5G多卡聚合路由,工业路由器,移动物联,商用路由, 视频直播, 融合通讯, 多链路聚合,5G多卡聚合,5G多链路聚合

热门文章

  1. 【微名片集】免费电子名片如何使用
  2. 消费是未来最大结构性投资机会
  3. 白皮书:对数放大器选择方法
  4. 【bzoj 2073】PRZ(状压DP)
  5. 水滴数据建设实践及思考:2大关键问题,4大破局措施
  6. POJ 300AC~~(2007-04-18 16:38)
  7. 东方财富自选批量导入
  8. git命令从gitlab上克隆代码的时候遇到的问题
  9. APT威胁检测之flash类检测方法
  10. 【图解算法数据结构】数据结构篇 + Java代码实现