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已默认添加此样式)此属性默认开启 这个属性是因为在早期 ...
随机推荐
- 全文搜索 Lucene.Net
Lucene简介 首先说明的是--Lucene.Net只是一个全文检索开发包,不是一个成型的搜索引擎, 它的功能就是负责将文本数据按照某种分词算法进行切词,分词后的结果存储在索引库中,从索引库检索数据 ...
- android学习链接
Android studio/Gradle学习资源:http://www.cnblogs.com/licheetec/p/4475426.html
- [Data Structure] 数据结构中各种树
数据结构中有很多树的结构,其中包括二叉树.二叉搜索树.2-3树.红黑树等等.本文中对数据结构中常见的几种树的概念和用途进行了汇总,不求严格精准,但求简单易懂. 1. 二叉树 二叉树是数据结构中一种重要 ...
- PHP中spl_autoload_register()函数的用法
spl_autoload_register (PHP 5 >= 5.1.2) spl_autoload_register — 注册__autoload()函数 说明 bool spl_autol ...
- mysql的DISABLE/ENABLE KEYS
有一个表 tbl1 的结构如下: CREATE TABLE `tbl1` ( `id` int(10) unsigned NOT NULL auto_increment, `name` char(20 ...
- sscanf提取字符串中的数据php
1.需求 理解sscanf的作用 2.例子 $str = "age:30 weight:60kg"; sscanf($str,"age:%d weight:%dkg&qu ...
- Flask 吐血400错误
的确地址或者method不匹配,这个容易解决 在后端中取到了form中不存在的元素! 这个很麻烦,特别form里面的信息比较多时!这个需要一一排查.另外取元素时最好用 request.form.get ...
- python——连接MySQL数据库
都是照着说明文档来的,主要是为了以后忘记了能快一点想起来. 1. 连接 安装MySQL的时候,自动按照了Python的模块,如果没有的话,也可以在官网下载. 看什么都不如看代码来得快: import ...
- 在VS中建立.aspx,.cs,.designer.cs之间的级联关系
<Compile Include="..\Admin\Actions.aspx.cs"> <DependentUpon>Actions.aspx</D ...
- Monkeyrunner 常用按键
MonkeyRunner常用的按键介绍 Home键:KEYCOD_HOME Back键:KEYCODE_BACK send键:KEYCODE_CALL end键:KEYCODE_ENDCALL ...