网站建设资讯

NEWS

网站建设资讯

包含ios开发饼状图的词条

iOS使用Charts框架绘制—饼状图

首先先看一下效果:

成都创新互联是一家集网站建设,儋州企业网站建设,儋州品牌网站建设,网站定制,儋州网站建设报价,网络营销,网络优化,儋州网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

一、创建饼状图对象

创建饼状图对象用到类是PieChartView.h, 代码如下:

self.pieChartView = [[PieChartView alloc] init];

self.pieChartView.backgroundColor = BgColor;

[self.view addSubview:self.pieChartView];

[self.pieChartView mas_makeConstraints:^(MASConstraintMaker *make) {

make.size.mas_equalTo(CGSizeMake(300, 300));

make.center.mas_equalTo(self.view);

}];

二、设置饼状图外观样式

1. 基本样式

[self.pieChartView setExtraOffsetsWithLeft:30 top:0 right:30 bottom:0];//饼状图距离边缘的间隙

self.pieChartView.usePercentValuesEnabled = YES;//是否根据所提供的数据, 将显示数据转换为百分比格式

self.pieChartView.dragDecelerationEnabled = YES;//拖拽饼状图后是否有惯性效果

self.pieChartView.drawSliceTextEnabled = YES;//是否显示区块文本

2. 设置饼状图中间的空心样式

空心有两个圆组成, 一个是hole, 一个是transparentCircle, transparentCircle里面是hole, 所以饼状图中间的空心也就是一个同心圆. 代码如下:

self.pieChartView.drawHoleEnabled = YES;//饼状图是否是空心

self.pieChartView.holeRadiusPercent = 0.5;//空心半径占比

self.pieChartView.holeColor = [UIColor clearColor];//空心颜色

self.pieChartView.transparentCircleRadiusPercent = 0.52;//半透明空心半径占比

self.pieChartView.transparentCircleColor = [UIColor colorWithRed:210/255.0 green:145/255.0 blue:165/255.0 alpha:0.3];//半透明空心的颜色

3. 设置饼状图中心的文本

当饼状图是空心样式时, 可以在饼状图中心添加文本, 添加文本有两种方法. 一种方法是使用centerText 属性添加, 这种方法不能设置字体颜色、大小等. 另一种方法是使用centerAttributedText属性添加, 这种方法添加的富文本, 因此就可以对字体进行进一步美化了. 代码如下:

if (self.pieChartView.isDrawHoleEnabled == YES) {

self.pieChartView.drawCenterTextEnabled = YES;//是否显示中间文字

//普通文本

// self.pieChartView.centerText = @"饼状图";//中间文字

//富文本

NSMutableAttributedString *centerText = [[NSMutableAttributedString alloc] initWithString:@"饼状图"];

[centerText setAttributes:@{NSFontAttributeName: [UIFont boldSystemFontOfSize:16],

NSForegroundColorAttributeName: [UIColor orangeColor]}

range:NSMakeRange(0, centerText.length)];

self.pieChartView.centerAttributedText = centerText;

}

4. 设置饼状图描述

self.pieChartView.descriptionText = @"饼状图示例";

self.pieChartView.descriptionFont = [UIFont systemFontOfSize:10];

self.pieChartView.descriptionTextColor = [UIColor grayColor];

5. 设置饼状图图例样式

self.pieChartView.legend.maxSizePercent = 1;//图例在饼状图中的大小占比, 这会影响图例的宽高

self.pieChartView.legend.formToTextSpace = 5;//文本间隔

self.pieChartView.legend.font = [UIFont systemFontOfSize:10];//字体大小

self.pieChartView.legend.textColor = [UIColor grayColor];//字体颜色

self.pieChartView.legend.position = ChartLegendPositionBelowChartCenter;//图例在饼状图中的位置

self.pieChartView.legend.form = ChartLegendFormCircle;//图示样式: 方形、线条、圆形

self.pieChartView.legend.formSize = 12;//图示大小

三、为饼状图提供数据

为饼状图提供数据, 首先需要创建两个数组yVals和xVals, yVals数组存放饼状图每个区块的数据, xVals存放的是每个区块的名称或者描述。

接着需要用PieChartDataSet.h类创建dataSet对象, 创建时将yVals放进去。

然后需要用PieChartData.h类创建data对象, 创建时将xVals和dataSet对象放进去。

最后直接把data对象赋值给饼状图的data属性即可. 创建data对象代码如下:

- (PieChartData *)setData{

double mult = 100;

int count = 5;//饼状图总共有几块组成

//每个区块的数据

NSMutableArray *yVals = [[NSMutableArray alloc] init];

for (int i = 0; i count; i++) {

double randomVal = arc4random_uniform(mult + 1);

BarChartDataEntry *entry = [[BarChartDataEntry alloc] initWithValue:randomVal xIndex:i];

[yVals addObject:entry];

}

//每个区块的名称或描述

NSMutableArray *xVals = [[NSMutableArray alloc] init];

for (int i = 0; i count; i++) {

NSString *title = [NSString stringWithFormat:@"part%d", i+1];

[xVals addObject:title];

}

//dataSet

PieChartDataSet *dataSet = [[PieChartDataSet alloc] initWithYVals:yVals label:@""];

dataSet.drawValuesEnabled = YES;//是否绘制显示数据

NSMutableArray *colors = [[NSMutableArray alloc] init];

[colors addObjectsFromArray:ChartColorTemplates.vordiplom];

[colors addObjectsFromArray:ChartColorTemplates.joyful];

[colors addObjectsFromArray:ChartColorTemplates.colorful];

[colors addObjectsFromArray:ChartColorTemplates.liberty];

[colors addObjectsFromArray:ChartColorTemplates.pastel];

[colors addObject:[UIColor colorWithRed:51/255.f green:181/255.f blue:229/255.f alpha:1.f]];

dataSet.colors = colors;//区块颜色

dataSet.sliceSpace = 0;//相邻区块之间的间距

dataSet.selectionShift = 8;//选中区块时, 放大的半径

dataSet.xValuePosition = PieChartValuePositionInsideSlice;//名称位置

dataSet.yValuePosition = PieChartValuePositionOutsideSlice;//数据位置

//数据与区块之间的用于指示的折线样式

dataSet.valueLinePart1OffsetPercentage = 0.85;//折线中第一段起始位置相对于区块的偏移量, 数值越大, 折线距离区块越远

dataSet.valueLinePart1Length = 0.5;//折线中第一段长度占比

dataSet.valueLinePart2Length = 0.4;//折线中第二段长度最大占比

dataSet.valueLineWidth = 1;//折线的粗细

dataSet.valueLineColor = [UIColor brownColor];//折线颜色

//data

PieChartData *data = [[PieChartData alloc] initWithXVals:xVals dataSet:dataSet];

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];

formatter.numberStyle = NSNumberFormatterPercentStyle;

formatter.maximumFractionDigits = 0;//小数位数

formatter.multiplier = @1.f;

[data setValueFormatter:formatter];//设置显示数据格式

[data setValueTextColor:[UIColor brownColor]];

[data setValueFont:[UIFont systemFontOfSize:10]];

return data;

}

运行结果如下:

如果不需要空心样式的饼状图, 可以将饼状图的drawHoleEnabled赋值为NO, 将中间的文本去掉即可, 代码如下:

self.pieChartView.drawHoleEnabled = NO;

效果如下:

每个区块之间如果需要间距, 可以通过dataSet对象的sliceSpace属性设置, 代码如下:

dataSet.sliceSpace = 3;

效果如下:

由于属性较多, 其它效果可以自行尝试。

ios饼图绘制逻辑

源码

1、按百分比画圆弧度:

UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:start endAngle:end clockwise: YES ];

        [color set];

        [path addLineToPoint:center];

        [path fill];

2、添加圆心遮挡:

3、画折线跟引线:

//1.获取上下文

    CGContextRef ctx = UIGraphicsGetCurrentContext();

    //2.绘制路径

    UIBezierPath *path = [UIBezierPath bezierPath];

    [path moveToPoint:CGPointMake(endX, endY)];

    [path addLineToPoint:CGPointMake(breakPointX, breakPointY)];

    [path addLineToPoint:CGPointMake(startX, startY)];

    CGContextSetLineWidth(ctx, 0.5);

    //设置颜色

    [color set];

    //3.把绘制的内容添加到上下文当中

    CGContextAddPath(ctx, path.CGPath);

    //4.把上下文的内容显示到View上(渲染到View的layer)(stroke fill)

    CGContextStrokePath(ctx);

4、折线起始位置添加圆点;

5、在引线周围添加文本。

注意事项:

1、当前文本区域要跟前面所有文本区域比较是否有相交,相交后要调整当前文本区域;

2、图表内的圆点、文本、圆心遮挡、引线等既可以画也可以添加View的方式;

3、调整好圆弧半径及文本区域高宽,避免界面遮挡。

iOS 中各种折线.曲线.图形绘制方法集锦

第一 折线图实现

.1) 自定义视图实现

.2)关键技术实现

.3) 方法调用

.4) 效果展示

第二 走势曲线图实现

.1) 导入DJChart第三方库

.2)横竖轴参数设置

.3) 方法调用

.4) 效果展示

第三 画线图实现

.1) 导入ZXQuartz第三方库

.2) 自定义视图,画各种图形

.3) 方法调用

.4) 效果展示

第四 柱状图实现

.1) 导入ZXQuartz第三方库

.2)横竖轴参数设置

.3) 方法调用

.4) 效果展示

第五 各式图形实现

.1) 导入DJChart第三方库

.2)关键技术实现

.3) 方法调用

.4) 效果展示

第六 饼状图实现

.1) 关键技术实现

.2) 方法调用

.3) 效果展示

总结

前言

大家经常在做项目过程中,都会遇到一些画图,例如我们在天气预报中,统计这一周的天气状况变化时,这时我们就需要用折线图来进行统计(图一);例如统计就业率时,我们可能会用到柱状图等等.

首先我们来看看这样的折线该怎么实现呢?.现在我们来看看整体效果图.

现在我们来看看各种不同的图形到底是什么样的.

1) 折线图

2) 走势趋势图

3) 画线图

4) 柱状图

5) 各种图形

6)饼状图

好了看了上面各种折线图,大家一定很关心这些折线图是如何完成绘制的,下面我们就来看看各种图形的具体实现.

第一 折线图实现

1) 自定义视图

2) 关键技术实现

3 方法调用

4) 效果展示

第二 走势曲线图实现

1) 导入DJChart第三方库

2) 横竖轴参数设置

3) 方法调用

4) 效果图展示

第三 画线图实现

1) 导入ZXQuartz第三方库

2) 自定义视图,画各种图形

3) 方法调用

4) 效果图展示

第四 柱状图实现

1) 导入ZXQuartz第三方库

2) 关键技术实现

3) 方法调用

4) 效果图展示

第六 饼状图实现

1) 关键技术实现

2) 方法调用

3) 效果图展示

总结

是不是看起来很简单,把所有的绘图方式都集中起来,以后大家要用到就不用那么麻烦了.


分享名称:包含ios开发饼状图的词条
标题来源:http://njwzjz.com/article/dscoesi.html