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已默认添加此样式)此属性默认开启 这个属性是因为在早期 ...
随机推荐
- JS 加载html 在IE7 IE8下 可调试
实际背景 就是都是HTML 公共头部底部 然后中间部分加载不同的HTML文件 有点跟模板引擎一样 jQuery 有个load函数 加载html文件的路径 获取html内容 到中间部分 正常下是不能用 ...
- Nessus的安装/激活/更新
0x1,安装 百度:Nessus,随意下载一个就好了. 0x2,激活 开启代理,获取register code,如图: 获取到register code,填写,进行激活,意外报错: NOTICE: A ...
- BootStrap 杂记
1:Bootstrap中的弹出窗口组件Modal 2:让div或者文字居中 在标签的class里加上 text-center .
- Unity里的Mesh属性
----------------------------------------------------------------------------------------------- Mesh ...
- FTP Service mode : PORT & PASV
PORT Mode: 1. FTP client use TCP port 1026 for command to FTP server command port 212. FTP server us ...
- Linux/CentOS 搭建 SVN 项目
1.安装svn yum -y install subversion 2.创建svn仓库路径 mkdir -p /opt/svn/project1 mkdir -p /opt/svn ...
- HTML页面去缓存
在页面中写入: 两种写法: 1. <META HTTP-EQUIV="nocache" CONTENT="no-cache"> 2. <HEA ...
- Unity3D代码旋转
subGameObject.transform.Rotate (,,,Space.Self); 一行代码
- Count Complete Tree Nodes
Given a complete binary tree, count the number of nodes. Definition of a complete binary tree from W ...
- 技术架构:IBatisNet
--连接数据库框架 1 providers.config 提供配制 常用的数据库连接程序 的xml文件 2 SqlMap.xml SQL语句执行结果和实体对象之间的映射文 ...