精华内容
下载资源
问答
  • 昨天在做项目中,遇到一个需要显示扇形图的功能,网上搜了一下,发现code4app里面也没有找到我想要的那种类似的效果,没办法了,只能自己学习一下如何画了。  首先我们需要了解一个uiview的方法 -(void)drawRect:...

    昨天在做项目中,遇到一个需要显示扇形图的功能,网上搜了一下,发现code4app里面也没有找到我想要的那种类似的效果,没办法了,只能自己学习一下如何画了。 
    首先我们需要了解一个uiview的方法

    -(void)drawRect:(CGRect)rect
    • 1

    我们知道了这个方法,就可以在自定义UIView的子类的- (void)drawRect:(CGRect)rect里面绘图了,关于drawrect的调用周期,网上也是一找一大堆,等下我会整理一下,转载一篇供你们参考。 
    废话少说,下面直接开始代码 
    首先我们自定义一个继承字uiview的子类,我这里就起名字叫pieview了 
    首先我们试试先画一个圆

    #import "pieview.h"
    //直径,其实radius是半径的意思吧,哈哈 算了先用着,demo都写好了就不改了,你们知道就行了
    #define radius 50
    
    @implementation pieview
    
    -(void)drawRect:(CGRect)rect
    {
            CGContextRef ctx = UIGraphicsGetCurrentContext();//获取图形上下文
            CGPoint cent=CGPointMake((self.frame.size.width/2)-radius/2, (self.frame.size.height/2)-radius/2);//设置图形开始画的坐标原点,根据实际需要设置,我这是随便写的
            CGContextAddEllipseInRect(ctx, CGRectMake(cent.x, cent.y, 100, 100));这个是核心函数,在这里设置图形的开始从哪里画,画的宽度和高度是多少。如果宽高不一样 可就是椭圆了啊
             [[UIColor greenColor] set];//设置颜色
            CGContextFillPath(ctx);//实心的
            //CGContextStrokePath(ctx);空心的
    }
    
    @end
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    然后我们创建一个控制器 pieViewController 引用我们的pieview,展示一下效果

    #import "pieViewController.h"
    //#import "myview.h"
    //#import "JYpieview.h"
    #import "pieview.h"
    @interface pieViewController ()
    
    @end
    
    @implementation pieViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        pieview *view=[[pieview alloc]init];
        view.frame=CGRectMake(4, 150, 150, 300);
        [self.view addSubview:view];
    
    }
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    @end
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    好了看一下效果吧 
    这里写图片描述 
    好了,下面让我们开始扇形图的制作吧

    #import "pieview.h"
    //直径
    #define radius 50
    #define PI 3.14159265358979323846
    
    @implementation pieview
    //计算度转弧度
    static inline float radians(double degrees) {
        return degrees * PI / 180;
    }
    -(void)drawRect:(CGRect)rect
    {
        CGPoint cent=CGPointMake((self.frame.size.width/2)-radius/2, (self.frame.size.height/2)-radius/2);
        CGContextRef ctx = UIGraphicsGetCurrentContext();
        CGContextClearRect(ctx, rect);
    
        float angle_start = radians(0.0);
        float angle_end = radians(120.0);
        CGContextMoveToPoint(ctx, cent.x, cent.y);
        CGContextSetFillColor(ctx, CGColorGetComponents( [[UIColor greenColor] CGColor]));
        CGContextAddArc(ctx, cent.x, cent.y, radius,  angle_start, angle_end, 0);
        CGContextFillPath(ctx);
    
        angle_start = angle_end;
        angle_end = radians(360.0);
        CGContextMoveToPoint(ctx, cent.x, cent.y);
        CGContextSetFillColor(ctx, CGColorGetComponents( [[UIColor blueColor] CGColor]));
        CGContextAddArc(ctx, cent.x, cent.y, radius,  angle_start, angle_end, 0);
        CGContextFillPath(ctx);
    }
    @end
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    在运行一下,我们看下效果 
    这里写图片描述 
    可使有没有觉得上面的代码很多重复的?对的,我们可以封装一个方法 那么重构后的代码我就一次性的贴上去了

    #import "pieview.h"
    //直径
    #define radius 50
    #define PI 3.14159265358979323846
    
    @implementation pieview
    //计算度转弧度
    static inline float radians(double degrees) {
        return degrees * PI / 180;
    }
    static inline void drawArc(CGContextRef ctx, CGPoint point, float angle_start, float angle_end, UIColor* color) {
        CGContextMoveToPoint(ctx, point.x, point.y);
        CGContextSetFillColor(ctx, CGColorGetComponents( [color CGColor]));
        CGContextAddArc(ctx, point.x, point.y, radius,  angle_start, angle_end, 0);
        //CGContextClosePath(ctx);
        CGContextFillPath(ctx);
    }
    -(void)drawRect:(CGRect)rect
    {
        CGPoint cent=CGPointMake((self.frame.size.width/2)-radius/2, (self.frame.size.height/2)-radius/2);
        CGContextRef ctx = UIGraphicsGetCurrentContext();
        CGContextClearRect(ctx, rect);
    
        float angle_start = radians(0.0);
        float angle_end = radians(121.0);
        drawArc(ctx, cent, angle_start, angle_end, [UIColor yellowColor]);
    
        angle_start = angle_end;
        angle_end = radians(228.0);
        drawArc(ctx, cent, angle_start, angle_end, [UIColor greenColor]);
    
        angle_start = angle_end;
        angle_end = radians(260);
        drawArc(ctx, cent, angle_start, angle_end, [UIColor orangeColor]);
    
        angle_start = angle_end;
        angle_end = radians(360);
        drawArc(ctx, cent, angle_start, angle_end, [UIColor purpleColor]);
    
    }
    @end
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    看下运行效果图 
    这里写图片描述

    如果我们中途数据变了 想要改一下图形怎么办呢? 
    那么我们就需要用到这个

        //通知自定义的view重新绘制图形
    //    [self setNeedsDisplay];
    • 1
    • 2

    这时候我们就要pieview向外界提供一个接口属性,这是我做的模拟5面之后改变圆形的直径大小 
    .h文件

    #import <UIKit/UIKit.h>
    
    @interface pieview : UIView
    //直径
    @property(nonatomic,assign)float radius;
    @end
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    .m文件

    #import "pieview.h"
    #define PI 3.14159265358979323846
    
    @implementation pieview
    //计算度转弧度
    static inline float radians(double degrees) {
        return degrees * PI / 180;
    }
    static inline void drawArc(CGContextRef ctx, CGPoint point, float angle_start, float angle_end, UIColor* color,float radius) {
        CGContextMoveToPoint(ctx, point.x, point.y);
        CGContextSetFillColor(ctx, CGColorGetComponents( [color CGColor]));
        CGContextAddArc(ctx, point.x, point.y, radius,  angle_start, angle_end, 0);
        //CGContextClosePath(ctx);
        CGContextFillPath(ctx);
    }
    -(void)drawRect:(CGRect)rect
    {
        CGPoint cent=CGPointMake((self.frame.size.width/2)-self.radius/2, (self.frame.size.height/2)-self.radius/2);
        CGContextRef ctx = UIGraphicsGetCurrentContext();
        CGContextClearRect(ctx, rect);
    
        float angle_start = radians(0.0);
        float angle_end = radians(121.0);
        drawArc(ctx, cent, angle_start, angle_end, [UIColor yellowColor],self.radius);
    
        angle_start = angle_end;
        angle_end = radians(228.0);
        drawArc(ctx, cent, angle_start, angle_end, [UIColor greenColor],self.radius);
    
        angle_start = angle_end;
        angle_end = radians(260);
        drawArc(ctx, cent, angle_start, angle_end, [UIColor orangeColor],self.radius);
    
        angle_start = angle_end;
        angle_end = radians(360);
        drawArc(ctx, cent, angle_start, angle_end, [UIColor purpleColor],self.radius);
    
    }
    -(void)setRadius:(float)radius
    {
        _radius=radius;
        [self setNeedsDisplay];
    }
    @end
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    pieViewController.m文件

    @implementation pieViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        pieview *view=[[pieview alloc]init];
        view.radius=50;
        view.frame=CGRectMake(4, 150, 150, 300);
        [self.view addSubview:view];
        //view.backgroundColor=[UIColor clearColor];
        //模拟5秒后执行这个段代码
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            view.radius=20;
        });
    }
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    @end
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    效果 
    这里写图片描述

    5秒之后 
    这里写图片描述

    展开全文
  • 扇形图是我们工作中最常用到的数据图表之一:多用于表示部分占总体的比例情况,从上图中可以看出,扇形图非常专一。既然是比例,一般就会用到百分比,所以在扇形图的标签中存在转化成百分比形式的这一项。也就是说,...

    扇形图是我们工作中最常用到的数据图表之一:

    多用于表示部分占总体的比例情况,从上图中可以看出,扇形图非常专一。

    既然是比例,一般就会用到百分比,所以在扇形图的标签中存在转化成百分比形式的这一项。也就是说,你不必修改数据格式为百分比形式,软件可以自行计算出来。

    扇形图功能单一,并且存在许多可以替代它的图表,比如下面几个例子:

    圆环图和扇形图很相似,无非就像将扇形图中心挖个窟窿,但是圆环图和扇形图主要的区别在于,圆环图可以表现多个系列数据的对比情况。

    柱形图比扇形图的优势在于可以跟清晰比较出各个部分的大小。

    堆积柱状图也可以表现多组数据比例间的对比。

    当数据较多时,表格处理不当,会产生很糟糕的可视化效果,但如果数据较少,且好理解,表格也是一种不错的可视化效果。

    很多种图表都有对应的立体形式,扇形图也不例外,立体图表确实要慎用,特别是存在透视效果的立体图表,近大远小的透视感会让你对图表信息产生错觉,这样对信息传达产生不必要的麻烦。

    如果扇形图的读图方式是从上到下,那么半饼图的读图方式就变成了从左向右,这一点符合我们平时的读图习惯。

    父子饼图是把一块饼图进行再细分,信息更加丰富,也很好理解。

    这两种图表都可以通过PPT或者Excel制作,下面简单通过视频给大家说一下具体的制作方法。

    半饼图的制作方法:

    父子饼图的制作方法:

    这两种的用处和父子饼图很相似,在PPT中可以选择这类图表直接制作。

    强调,无非是吸引观众的眼球,当其他扇形为黑白灰这种灰度模式时,将一个扇形修改为亮丽的颜色,无疑是吸引观众重点关注的好方法。

    还有这种强调方法,单独选中一个扇形,向外拖动即可,这里需要注意的是不要将这个扇形拖出过大距离,另外也不要把所有扇形都拖出来,全部强调的结果就是没有强调。

    将一个扇形放大,这种效果怎么做呢?如果你上面的父子饼图会制作了,那这个也一样可以做出来,原理都是一样的,不同的是:父子饼图,隐藏了部分次坐标轴的饼图,而这个放大的效果,隐藏了主坐标轴的饼图。你不清楚我在说什么吗?当你实际操作后,你会明白的。

    很多人是有强迫症的,喜欢圆满,不喜欢缺失,所以这里把一个扇形隐藏掉,观众在看这个图表时,第一眼必然是缺失的地方。(这也是为什么人们善于发现缺点,而看不到优点的原因吗?)

    将饼图填充图片,往往做不出好的效果,主要是图片明暗不一致,风格不够统一的原因,我这里面加了一个黑色的蒙版,使所有的图片降低亮度,将上面的文字显示出来。你没想到它是具有主次坐标轴的扇形图吧!

    规则只是一个大众约束,并非必然,很多时候根据实际需要打破规则:

    这就是我对扇形图的一些解读,难免有误,请多指教。

    展开全文
  • 使用echarts绘制条形图和扇形图简单举例说明下echarts如何绘制条形图和扇形图代码示例echarts绘制条形图和扇形图var mychart1=echarts.init(document.getElementById('chart1'),'light');// 指定图表的配置项和数据...

    使用echarts绘制条形图和扇形图

    简单举例说明下echarts如何绘制条形图和扇形图

    代码示例

    echarts绘制条形图和扇形图

    var mychart1=echarts.init(document.getElementById('chart1'),'light');

    // 指定图表的配置项和数据

    var option = {

    title: {

    text: 'ECharts 入门示例'

    },

    tooltip: {},

    legend: {

    data:['销量']

    },

    xAxis: {

    data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]

    },

    yAxis: {},

    series: [{

    name: '销量',

    type: 'bar',

    data: [40, 20, 36, 10, 10, 20]

    }]

    };

    // 使用指定的配置项和数据显示条形图表1。

    mychart1.setOption(option);

    //显示扇形图表2

    var mychart2=echarts.init(document.getElementById('chart2'),'light');

    var option2 = {

    title: {

    text: 'ECharts 扇形图示例'

    },

    tooltip: {},

    series: [{

    type: 'pie',

    data: [

    {value:1, name:'视频广告'},

    {value:2, name:'联盟广告'}

    ]

    }]

    };

    // 使用刚指定的配置项和数据显示图表。

    mychart2.setOption(option2);

    展示的效果如下图

    注意

    扇形图的数据中,value值和图形百分比的关系是,单个value/所有value的综合*100%

    展开全文
  • IOS 开发中画扇形图实例详解 昨天在做项目中,遇到一个需要显示扇形图的功能,网上搜了一下,发现code4app里面也没有找到我想要的那种类似的效果,没办法了,只能自己学习一下如何画了。 首先我们需要了解一个...
  • CSS如何画扇形

    2019-10-11 23:04:15
    效果如下: 用border + 宽高为0可以正方形 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-...

    效果图如下:
    正方形
    圆
    旋转之后的圆
    用border + 宽高为0可以画正方形

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
            #circle{
                width:0;
                height: 0;
                border: 50px solid green ;
                border-right: 50px solid greenyellow ;
                border-left: 50px solid greenyellow;/*此时是正方形*/
                border-radius: 50%;/*此时是圆*/
                transform: rotate(-45deg);/*逆时针旋转45deg*/
            }
        </style>
    </head>
    <body>
    <div id="circle">
    </div>
    </body>
    </html>
    

    另外一种方法:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
            #circle {
                width: 100px;
                height: 100px;
                background-color: #86CE2F;
                border-radius: 100px 100px 100px 100px;/*此时是圆*/
                /*border-radius: 100px 0px 0px 100px;/*此处可以思考一下*/
                /*border-radius: 100px 0px 0px 0px;/*此时是1/4圆*/
            }
        </style>
    </head>
    <body>
    <div id="circle">
    </div>
    </body>
    </html>
    
    展开全文
  • 如何用scratch画扇形统计一、学习目标1、有六个班,每班人数是50-100间的随机数,用扇形统计统计出各班人数所占的比例(各班人数列表假设是一个集合,集合的性质决定元素互异性,每...
  • IOS 开发中画扇形图实例详解昨天在做项目中,遇到一个需要显示扇形图的功能,网上搜了一下,发现code4app里面也没有找到我想要的那种类似的效果,没办法了,只能自己学习一下如何画了。首先我们需要了解一个uiview的...
  • OpenLayers中如何画扇形

    千次阅读 2012-05-16 11:17:55
    项目中用到了地图展示,但是有个需求是根据参数画扇形,但是OpenLayers没有画扇形的现成函数,在某个牛人的帮助下,修改了下源代码便可以了 1,首先在源码中加入以下代码,最好是在OpenLayers.Geometry.Polygon....
  • 概要本文将讨论处理图形的一般方法。...3)如何组合多幅图形为单幅图形4)特定类型的图形如何画01保存图片1)准备数据为方便操作,采用书上数据(第三章)。dose c(drugA c(drugB c(plot(dose,drugA,type="b")help(plo...
  • ​​然后,我们根据这个思路一步一步去实现这个效果先拖入一个圆,点击右上角的小点转换为自定义形状,选择第四个形状,操作如一所示一​然后拖动这个形状两头的小点,拖成一个扇形样子,如二所示。二再...
  • MFC如何画详解

    千次阅读 2017-06-20 21:03:53
    有个画扇形的API,但是现在先不解释,因为不懂画饼的原理,你也不懂怎么用。接下来就一步步带大家去计算饼图的扇形两点坐标。直接看下,文字解释总是太抽象。 接下来就是用Pie这个函数来画出扇形了。 其原型...
  • 对于如何高效复习中考数学,不同的考生有自己的方法技巧,不过无论是哪种复习方法,都不要忽视了题型的积累和总结。我们对历年中考数学试题进行分析和研究,会发现与图表信息有关的试题,已经成为中考数学热点题型。...
  • css画扇形按钮

    2019-03-19 16:47:00
    这就需要画扇形。百度了一下,有很多文章讲了如何生成扇形,最后我借鉴了一个最简单的实现方式,使用css的clip属性,完美实现。 参考文章为:http://www.cnblogs.com/zhidong123/p/6026761.html,对作者表示感谢。 ...
  • 使用QPainter的2D绘图画扇形方式实现一个模拟时钟,从中可以对Qt的坐标系有初步理解。同时学习如何画扇形
  • View绘制扇形图

    2019-05-23 11:14:57
    我们在做类似报表类的app需求的时候,有时候我们...在画扇形图之前我们需要先确认我们扇形图放置的位置,这边不得不介绍一下RectF。 RectF表示的是一个矩形区域,那么我们扇形的位置大小就可以由RectF来控制,Rect...
  • 首先我们从柱形开始,最终我们希望做出下面的几种效果,1、插入柱形。依次点击“插入”——“图表”——“柱形”,这里选择第一个(簇状柱形),点击确定,便插入了一个跟Excel相关联的柱形,我们可以直接在...
  • 有关于svg的概念不需要讲解太多,需要查看更多,请点击svg百度,先来看看如何使用path来绘画扇形。1、第一步需要添加<svg>标签<svg xmlns="http://www.w3.org/2000/svg" id="svg_draw" wid...
  • 在面试前,我会用迅捷画图绘制一份面试技巧的思维导图,里面一一列举了面试的重点内容,比如如何了解意向公司和岗位,自我介绍的要点、期望薪资等。个人觉得这个方法挺好的,到时候面试前大致浏...
  • matlab是一个功能强大的商业数学软件,那么如何用matlab命令绘制扇形图呢?话不多说,我们直接上代码: clear all; X=[67.6 22 270.4]; pie(X) 按下回车,效果图如下: X[ ]数组中的元素表示各部分所占的大小,无需...

空空如也

空空如也

1 2 3 4 5 6
收藏数 118
精华内容 47
关键字:

如何画扇形图