CoreGraphics--饼状图
//传入数据,饼状图
pieChartView.dataArr = @[@20,@50,@80,@70,@40];
- (void)drawRect:(CGRect)rect {
// Drawing code
#if 0
//贝塞尔路径
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(50, 50, 100, 100)];
//Oval 椭圆
//线条颜色
[[UIColor redColor] setStroke];
//线条宽度
path.lineWidth = 5;
//开始画
[path stroke];
//设置填充颜色
[[UIColor yellowColor] set];
//开始填充
[path fill];
#endif
//开始
CGFloat startDegress = 0;
//结束
CGFloat endDegress = 0;
for (int i = 0; i < _dataArr.count; i++) {
//终点弧
//计算数据每个元素的值所占的百分比
endDegress += M_PI * 2 *([self.dataArr[i] floatValue]/[self sum]);
//弧 路径
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(self.frame.size.width/2, self.frame.size.height/2) radius:MIN(self.frame.size.width, self.frame.size.height)/2 startAngle:startDegress endAngle:endDegress clockwise:YES];
//更底层(这两句,相当于上面一句)
// CGMutablePathRef path = CGPathCreateMutable();
// CGPathAddArc(path, NULL,self.frame.size.width/2,self.frame.size.height/2, MIN(self.frame.size.width, self.frame.size.height)/2, startDegress, endDegress, YES);
//重新修改开始的弧度
//第二个弧的起点 ,是上一个弧的终点
startDegress = endDegress;
//注意:先画一个弧,然后终点-圆心 画一条线(以便能够填充,否则不能填充)
//坐标为圆心
[path addLineToPoint:CGPointMake(self.frame.size.width/2, self.frame.size.height/2)];
//线条颜色
// [[self randomColor] setStroke];
//线条宽度
// path.lineWidth = 5;
//开始画
// [path stroke];
//设置填充颜色
[[self randomColor] set];
//开始填充
[path fill];
}
}
- (UIColor *)randomColor{
return [UIColor colorWithRed:arc4random()%256/255.0 green:arc4random()%256/255.0 blue:arc4random()%256/255.0 alpha:1];
}
- (void)setDataArr:(NSArray *)dataArr{
_dataArr = dataArr;
//调用drawRect刷新(再走一次上面)
[self setNeedsDisplay];
}
//获取数组中总数
#pragma mark -- 计算数组中 数据的总和
- (CGFloat)sum{
__block CGFloat sum = 0;
[self.dataArr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
sum = sum + [obj floatValue];
}];
return sum;
}
CoreGraphics--饼状图的更多相关文章
- [BOT]自己动手实现android 饼状图,PieGraphView,附源码解析
本文要介绍的是一个参照手机支付宝app里面记账本功能里的"饼状图"实现的控件.通常app中可能的数据展示控件有柱状图,折线图,饼状图等,如果需要一个包含多种View控件的库,那么 ...
- highcharts饼状图使用案例
在公司由于需要对订单数据进行分析,故使用到了highcharts工具 <block name="Js"> <script type="text/java ...
- C#+JQuery+.Ashx+百度Echarts实现全国省市地图和饼状图动态数据图形报表的统计
在目前的一个项目中,需要用到报表表现数据,这些数据有多个维度,需要同时表现出来,同时可能会有大量数据呈现的需求,经过几轮挑选,最终选择了百度的echarts作为报表基础类库.echarts功能强大,界 ...
- arcgis api for flex之专题图制作(饼状图,柱状图等)
最近公司给我一个任务,就是利用arcgis api for flex实现在地图上点(业务数据)直接显示饼状图以及柱状图的专题图制作,而不是通过点击点显示气泡窗口的形式来实现,这个公司已经实现了. 经过 ...
- 用CAShapeLayer实现一个简单的饼状图(PieView)
自己写了一个简单的PieView,demo在这里:https://github.com/Phelthas/LXMPieView 效果如图: 参考了https://github.com/kevinzho ...
- ECharts学习(2)--饼状图之南丁格尔图
1.上一篇中讲了如何绘制一个简单的柱状图,这次要画的是饼图,饼图主要是通过扇形的弧度表现不同类目的数据在总和中的占比,它的数据格式比柱状图更简单,只有一维的数值,不需要给类目.因为不在直角坐标系上,所 ...
- Android开源图表之树状图和饼状图的官方示例的整理
最近由于工作需要,所以就在github上搜了下关于chart的三方框架 官方地址https://github.com/PhilJay/MPAndroidChart 由于工作需要我这里整理了一份Ecli ...
- AngularJS in Action读书笔记5(实战篇)——在directive中引入D3饼状图显示
前言: "宁肯像种子一样等待 也不愿像疲惫的陀螺 旋转得那样勉强" 这是前几天在查资料无意间看到的一位园友的签名,看完后又读了两遍,觉得很有味道.后来一寻根究底才知这是出资大诗 ...
- jqPlot图表插件学习之饼状图和环状图
一.准备工作 官网下载(笔者选择的是jquery.jqplot.1.0.8r1250.zip这个版本) 然后读者需要根据自己的情况新建一个项目并且按照如下的方式加载对应的js和css(因为笔者在VS2 ...
- D3.js 饼状图的制作
1.数据 有如下数据,需要可视化: var dataset = [ 30 , 10 , 43 , 55 , 13 ]; 这样的值是不能直接绘图的.例如绘制饼状图的一个部分,需要知道一段弧的起始角度和终 ...
随机推荐
- TypeScript教程2
在TS中,我们允许开发人员使用面向对象技术. 1.类让我们看看一个简单的基于类的例子: class Greeter { greeting: string; constructor(message: s ...
- HUST 1584 摆放餐桌
1584 - 摆放餐桌 时间限制:1秒 内存限制:128兆 609 次提交 114 次通过 题目描述 BG准备在家办一个圣诞晚宴,他用一张大桌子招待来访的客人.这张桌子是一个圆形的,半径为R.BG邀请 ...
- 数据结构(Java描述)之二叉树
基础概念 二叉树(binary tree)是一棵树,其中每个结点都不能有多于两个儿子. 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于或等于它 ...
- UICollectionView 很简单的写个瀑布流
你项目中要用到它吗? 可能会在你的项目中用到这玩意,最近也是要用就简单的写了一个 Demo.没多少代码,就不放Git了,下面会详细点的说说代码的,要还有什么问题的小伙伴可以直接Q我,也可以把Demo发 ...
- java 文件操作 读取字节级数据(读取)
package com.swust; import java.io.*; /* * 功能:按照双精度浮点型.整型.布尔型.字符型.和字符串型的顺序从名为sample.dat文件读取数据 * 分析:用F ...
- enote笔记语言(3)(ver0.2)
what&why(why not)&how&when&where&which:紫色,象征着神秘而又潜蕴着强大的力量,故取紫色. key&keyword: ...
- [solr] - solr5.2.1环境搭建 - 使用solr自带的jetty服务器
solr除了使用tomcat作为容器外,还可以使用其他的常用容器,比如jetty,jboos等,而且solr自身就自带jetty服务器,那么现在就solr自带的jetty服务器进行安装操作.由于sol ...
- "table" is not mapped 解决方法
现象:使用hql="from person" 出现" person is not mapped " 错误 配置文件如下:<hibernate-mappin ...
- ubuntu12.04下安装pptp_vpn服务器
1.下载安装apt-get install pptpd 2.配置/etc/pptpd.confvim /etc/pptpd.conf添加下面两行(在配置文件的最后取消注释修改IP即可)localip ...
- [Usaco2014 Open]Gold Fair Photography(hash)
最近做了usaco2014 open的金组,果然美帝的题还是没有太简单啊QAQ,被每年的月赛骗了QAQ 不过话说官方题解真心棒(虽然英文的啃得好艰难,我英语渣你们别鄙视我= =),标程超级优美QAQ ...