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已默认添加此样式)此属性默认开启 这个属性是因为在早期 ...
随机推荐
- .Net 中的反射(序章) - Part.1
引言 反射是.Net提供给我们的一件强力武器,尽管大多数情况下我们不常用到反射,尽管我们可能也不需要精通它,但对反射的使用作以初步了解在日后的开发中或许会有所帮助. 反射是一个庞大的话题,牵扯到的知识 ...
- ArcGIS Server开发教程系列(7)使用ArcGIS API for Javascript-Hello World
ArcGIS API for Javascript API下载地址:http://support.esrichina-bj.cn/2011/0223/960.html 选择最新的下载就好了,目前是3 ...
- Bash 什么时候会给 HOME 赋初始值
今天无意发现下面这个表现: $ env -i bash -c cd bash: line 0: cd: HOME not set $ env -i bash -c 'echo $HOME' 这表明了 ...
- sql clear dblog
USE [master]GOALTER DATABASE ndFlightPolicy SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE ndFligh ...
- 只用@property定义一个属性speed,子类不能直接用_speed,需要在interface的成员变量列表里写上_speed
//写法一: @interface Person : NSObject { } @property (nonatomic, strong) NSString *name; @end @implemen ...
- lib库dll库的使用方法与关系
一.lib库 lib库有两种:一种是静态lib(static Lib),也就是最常见的lib库,在编译时直接将代码加入程序当中.静态lib中,一个lib文件实际上是任意个obj文件的集合,obj文件是 ...
- jQuery入门(4)jQuery中的Ajax应用
jQuery入门(1)jQuery中万能的选择器 jQuery入门(2)使用jQuery操作元素的属性与样式 jQuery入门(3)事件与事件对象 jQuery入门(4)jQuery中的Ajax()应 ...
- 【Alpha版本】冲刺-Day1
队伍:606notconnected 会议时间:11月9日 会议总结 张斯巍(433) 今天安排:设计登陆界面背景,图标的大小规定 完成度:90% 明天计划:主界面图标的修改,侧边栏背景设计,个人信息 ...
- shell--1.shell 相关及变量
1.shell脚本解释器 Bourme Shell (/usr/bin/sh 或 /bin/sh ) Bourme Again Shell ( /bin/bash ) C Shell ( /usr/b ...
- H5案例分享:使用JS判断客户端、浏览器、操作系统类型
使用JS判断客户端.浏览器.操作系统类型 一.JS判断客户端类型 JS判断客户端是否是iOS或者Android手机移动端 通过判断浏览器的userAgent,用正则来判断手机是否是ios和Androi ...