MPAndroidChart 折线图动态设置不同折点的颜色
前言:最近在学习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 折线图动态设置不同折点的颜色相关推荐
- echarts折线图堆叠怎么设置_ECharts折线图堆叠设置为不堆叠的方法
下图是ECharts折线图堆叠的官方源码,设置折线图不堆叠只需要将每一个stack的值设置为不一样的名称或者将stack属性删除即可. option = { title: { text: '折线图堆叠 ...
- matplotlib.pyplot常用画图方式函数封装(一)——.plot绘制折线图及设置坐标轴箭头完美解决
matplotlib.pyplot常用画图方式函数封装(一)--.plot绘制折线图及设置坐标轴箭头完美解决 py.plot常见绘图设置函数封装 绘制函数图像(完美解决坐标轴添加箭头) 绘制折线图 p ...
- echart 折线从左到右动画效果_echarts多条折线图动态分层的实现方法
1.关于Echarts 大家可以到这个网址看一下,还是比较详细的. 这个功能还是很强大的,对于喜欢做数据统计来说是美味的. 2.echarts多条折线图动态分层 var xData = param.x ...
- Echarts折线图属性设置大全
Echarts折线图属性设置大全 var option = {backgroundColor: '#FFF0F5',title: {text: '折线图',subtext: '模拟数据',x: 'ce ...
- Python可视化:绘制折线图、设置线条形状和marker样式
绘制折线图.设置线条形状和marker样式 Python可视化:绘制折线图.设置线条形状和marker样式 修改线形:线形可选集合 修改marker:marker可选集合 Python可视化:绘制折线 ...
- echarts切换折线图变大_Echarts折线图属性设置大全
Echarts折线图属性设置大全 var option = { backgroundColor: '#FFF0F5', title: { text: '折线图', subtext: '模拟数据', x ...
- 3种前端动态设置纯色图标的颜色的方法
在开发中,我们需要实现动态切换全局主题色,对于文字颜色或者背景都很好实现,但是页面中经常会有很多小图标,也需要根据主题色进行切换. 这篇文章主要介绍3种最常用的实现方法. 1.使用svg图,通过更改p ...
- wpf 动态设置textblock的字体颜色
动态设置textblock的字体颜色 <TextBlock HorizontalAlignment="Center" VerticalAlignment="Cent ...
- 为什么有时动态设置 View 的背景颜色 BackgroundColor 无效?
项目场景: 为什么有时动态设置 View 的背景颜色 BackgroundColor 无效,不少新手是不是遇到过这个问题呢 问题描述: 前几天朋友问了我一个问题,他直接在activity里动态设置 V ...
最新文章
- 什么叫取反_转载:CodeReview正确的姿势是什么?
- 调用webservice 设置超时时间
- 学会这几招让 Go 程序自己监控自己
- 12 月份 10 个新鲜的 jQuery 插件和教程
- 对刚接触oracle的人比较有用的一些工具 zt
- 微软斥资 260 亿美元收购了 LinkedIn 后却无所作为?
- 动态为GridView控件创建列
- matlab2c使用c++实现matlab函数系列教程-rot90函数
- [转载] python学习笔记(三)- numpy基础:array及matrix详解
- SQL server 表数据改变触发发送邮件
- 前端最佳实践(一)——DOM操作
- 网上零食销售系统(Java;JSP;JDBC)附源码+数据库+论文
- Java文件上传之断点续传解决方案
- Netscreen的岁月 from Sina
- img写盘工具安装Linux,USB Image Tool:Windows下的直接写盘利器 【开源硬件佳软介绍 #2】...
- syncnavigator关于win10、win8系统无法注册机进行激活的问题
- 第七届山东理工大学ACM趣味编程循环赛 Round#2 sdut4120 城堡问题
- python-django前端传递数据的三种格式_CBV源码分析_django模板语法
- ARC093 F Dark Horse——容斥
- 5g多卡聚合路由器/5g多卡汇聚路由器,多网融合,弱网通信,多卡聚合路由器,5G多卡聚合路由,工业路由器,移动物联,商用路由, 视频直播, 融合通讯, 多链路聚合,5G多卡聚合,5G多链路聚合