Android MPAndroidChart RadarChart (蜘蛛网图)
最近项目涉及到这个统计图形,经过实现,记录下,防止忘记了。
1、Github地址:MPAndroidChart
官方使用RadarChart demo:RadarChartActivitry
2、使用MPAndroidChart,还需要添加 nineoldandroids-2.4.0.jar
官方地址:http://nineoldandroids.com/
使用的是MPAndroidChart v2.2.2 的,还没有jar包。
在app目录下build.gradle的文件添加:
repositories {
flatDir {
dirs 'libs'
}
maven { url "https://jitpack.io" }
maven { // this is for realm-db
url 'http://oss.jfrog.org/artifactory/oss-snapshot-local'
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':MPChartLib')
}
在setting.gradle的文件添加:
include ':MPChartLib'
对于实心填充
设置图例:
Legend l = mChart.getLegend();
// 图例位置
l.setPosition(Legend.LegendPosition.BELOW_CHART_LEFT);
// 图例字体样式
// l.setTypeface(tf);
// 图例X间距
l.setXEntrySpace(2f);
// 图例Y间距
l.setYEntrySpace(1f);
l.setTextColor(textColor); //字体颜色
设置x、y:
XAxis xAxis = mChart.getXAxis();
// X坐标值字体样式
// xAxis.setTypeface(tf);
// X坐标值字体大小
xAxis.setTextSize(12f);
xAxis.setTextColor(textColor); YAxis yAxis = mChart.getYAxis();
// Y坐标值字体样式
// yAxis.setTypeface(tf);
// Y坐标值标签个数
yAxis.setLabelCount(6, false);
// Y坐标值字体大小
yAxis.setTextSize(15f);
// Y坐标值是否从0开始
yAxis.setStartAtZero(true);
// 是否显示y值在图表上
yAxis.setDrawLabels(false);
设置显示内容块:
RadarDataSet set1 = new RadarDataSet(yVals, "虾米手机");
// 数据颜色设置
set1.setColor(ColorTemplate.VORDIPLOM_COLORS[0]);
// 实心填充区域颜色
set1.setFillColor(ColorTemplate.VORDIPLOM_COLORS[0]);
// 是否实心填充区域
set1.setDrawFilled(true);
// 数据线条宽度
set1.setLineWidth(2f);
来一发效果图:

如果想要自定义网状:
1、com.github.mikephil.charting.charts.RadarChart
2、在上面类中的 init 方法中,有如下三行:
// 对网进行绘画
mRenderer = new RadarChartRenderer(this, mAnimator, mViewPortHandler);
// 对y轴的绘画
mYAxisRenderer = new YAxisRendererRadarChart(mViewPortHandler, mYAxis, this);
// 对x轴的绘画
mXAxisRenderer = new XAxisRendererRadarChart(mViewPortHandler, mXAxis, this);
3、这下找到 RadarChartRenderer 下的 drawWeb(Canvas c):
(1)首先会看到第一个循环体,这个循环体是进行从中心点发出到六边角的直线:
// 图表中心点到各六边角的的直线绘画,所以可在此之后增加直线后绘制的内容,比如增加圆点等。
for (int i = 0; i < mChart.getData().getXValCount(); i += xIncrements) { PointF p = Utils.getPosition(
center,
mChart.getYRange() * factor,
sliceangle * i + rotationangle); c.drawLine(center.x, center.y, p.x, p.y, mWebPaint); p = Utils.getPosition(
center,
mChart.getYRange() * factor + 15,
sliceangle * i + rotationangle); // 画圆点
c.drawCircle(p.x, p.y, 5, mWebPointPaint);
}
(2)往下有第二个循环体,开始绘制点到点的直线,绘制成网,这个时候就可以针对一层层网的背景,进行自定义绘制:
// y轴标签数,就是多少层网。
for (int j = 0; j < labelCount; j++) { if(j < 5) {
mWebPaint.setAlpha(0);
} if(j >= 5) {
mWebPaint.setAlpha(10);
mWebPaint.setStrokeWidth(0.5f + width);
width += 0.5f;
} if(j == labelCount - 1){
mWebPaint.setAlpha(20);
mWebPaint.setStrokeWidth(0.5f + width);
} Path path3 = new Path();
// 绘制循环到的网层
for (int i = 0; i < mChart.getData().getXValCount(); i++) { float r = (mChart.getYAxis().mEntries[j] - mChart.getYChartMin()) * factor; PointF p1 = Utils.getPosition(center, r, sliceangle * i + rotationangle);
PointF p2 = Utils.getPosition(center, r, sliceangle * (i + 1) + rotationangle); c.drawLine(p1.x, p1.y, p2.x, p2.y, mWebPaint); // 从50% 开始
if(j >= 5) {
if (i == 0) {
path3.moveTo(p1.x, p1.y);
path3.lineTo(p2.x, p2.y);
}
path3.lineTo(p1.x, p1.y);
}
} // 从50% 开始
if(j >= 5){
mWebContentPaint.setAlpha(5);
path3.close();
c.drawPath(path3, mWebContentPaint);
}
}
查找到的资源:
1、SpiderWebChart:http://code1.okbase.net/codefile/SpiderWebChart.java_2014121928718_71.htm
2、csdn 上分享写的 MPAndroidChart 教程
4、Radar (Spider Charts) {html用的}http://www.fusioncharts.com/charts/radar-spider-charts/
Android MPAndroidChart RadarChart (蜘蛛网图)的更多相关文章
- <Android 应用 之路> MPAndroidChart~BubbleChart(气泡图) and RadarChart(雷达图)
简介 MPAndroidChart是PhilJay大神给Android开发者带来的福利.MPAndroidChart是一个功能强大并且使用灵活的图表开源库,支持Android和iOS两种,这里我们暂时 ...
- Android图表库MPAndroidChart(二)——线形图的方方面面,看完你会回来感谢我的
Android图表库MPAndroidChart(二)--线形图的方方面面,看完你会回来感谢我的 在学习本课程之前我建议先把我之前的博客看完,这样对整体的流程有一个大致的了解 Android图表库MP ...
- Android 使用 MPAndroidChart 实现折线图
Android 使用 MPAndroidChart 实现折线图 做Android项目的时候用到了折线图,不光折线图,还可能遇到很多的图表需要展示渲染,自己手画的话那好玩了,今天使用MPAndroidC ...
- 自定义蜘蛛网图 NetView
概述 写论文忙里偷闲写了一个蜘蛛网图的自定义view,支持多重属性 有图才能有真相,下面先上图 主要支持网格颜色.tag文本.覆盖区域颜色.透明度的属性改变,具体使用可以参见我的githubgithu ...
- Android进阶 | 摆脱斗图 | 行业交流 | 深度学习 | 付费
Android进阶 | 摆脱斗图 | 行业交流 | 深度学习 | 付费 其实在很早的时候我就有想过,是不是退出一些群,因为群太多了,里面的水友也多,基友也多,就难免会水起来,这样既耽误学习又耽误工作, ...
- Android 开发 VectorDrawable 矢量图 (三)矢量图动画
VectorDrawable 矢量图 三部曲: Android 开发 VectorDrawable 矢量图 (一)了解Android矢量图与获取矢量图 Android 开发 VectorDrawabl ...
- Android 开发 VectorDrawable 矢量图 (一)了解Android矢量图与获取矢量图
VectorDrawable 矢量图 三部曲: Android 开发 VectorDrawable 矢量图 (一)了解Android矢量图与获取矢量图 Android 开发 VectorDrawabl ...
- 自己制作 Android Vector Asset 矢量图
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/c5138891/article/deta ...
- React-Native 之 GD (二十)removeClippedSubviews / modal放置的顺序 / Android 加载git图\动图 / 去除 Android 中输入框的下划线 / navigationBar
1.removeClippedSubviews 用于提升大列表的滚动性能.需要给行容器添加样式overflow:’hidden’.(Android已默认添加此样式)此属性默认开启 这个属性是因为在早期 ...
随机推荐
- 如何在ASP.NET MVC和EF中使用AngularJS
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) AngularJS作为一个越来越流行的前端框架,在使用ASP.NET MVC和实体框架开发W ...
- javascript数据结构与算法---列表
javascript数据结构与算法---列表 前言:在日常生活中,人们经常要使用列表,比如我们有时候要去购物时,为了购物时东西要买全,我们可以在去之前,列下要买的东西,这就要用的列表了,或者我们小时候 ...
- SQL 查找表名 字段名
转载:http://www.accessoft.com/article-show.asp?id=6135 经常碰到一些忘记表名称的情况,此时只记得个大概,此时可通过查询系统表Sysobjects找到所 ...
- jquery选择器(总结)
基本选择器 选择器 描述 示例 #id 根据给定的ID匹配一个元素 $("#id") .class 根据制定的class匹配一个元素 $(".class") ...
- PHP数组函数: array_map()
定义和用法 array_map() 函数返回用户自定义函数作用后的数组.回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致. 语法 array_map(function,a ...
- 还原MySql数据库失败:max_allowed_packet 设置过小导致记录写入失败
MySQL根据配置文件会限制Server接受的数据包大小. 有时候大的插入和更新会受 max_allowed_packet 参数限制,导致写入或者更新失败. 查看目前配置 show VARIABLES ...
- JS正则检测密码强度
今天遇到个需求,使用JS检测密码强度:密码长度最短为8,必须同时包含字母.数字.特殊符号. 代码如下: /* * 检测密码复杂度 */ function ...
- C和指针 第三章 变量的储存类型 auto、static、register以及static关键词
变量的储存类型决定标量何时创建,何时销毁以及他的值保持多久.有三个地方可以储存变量: 普通内存static 运行时堆栈auto 硬件寄存器register 变量的缺省储存类型取决于它的声明位置: 静态 ...
- DAY5 DVWA之SQL注入演练(low)
1.设置 把安全等级先调整为low,让自己获得点信心,免得一来就被打脸. 2.测试和分析页面的功能 这里有一个输入框 根据上面的提示,输入用户的id.然后我们输入之后,发现它返回了关于这个 ...
- 一条代码解决各种IE浏览器兼容性问题
在网站开发中不免因为各种兼容问题苦恼,针对兼容问题,其实IE给出了解决方案Google也给出了解决方案百度也应用了这种方案去解决IE的兼容问题 百度源代码如下 <!Doctype html> ...