iOS使用Charts框架绘制—柱形图
首先看一下最终要实现的效果:
最终效果
一、初始化barChartView
绘制柱形图需要用到BarChartView
这个类,下面是初始化代码:
self.barChartView = [[BarChartView alloc] init];
self.barChartView.delegate = self;//设置代理
[self.view addSubview:self.barChartView]; [self.barChartView mas_makeConstraints:^(MASConstraintMaker *make) { make.size.mas_equalTo(CGSizeMake(self.view.bounds.size.width-20, 300)); make.center.mas_equalTo(self.view); }];
二、设置barChartView的外观样式
1.基本样式
self.barChartView.backgroundColor = [UIColor colorWithRed:230/255.0f green:253/255.0f blue:253/255.0f alpha:1]; self.barChartView.noDataText = @"暂无数据";//没有数据时的文字提示 self.barChartView.drawValueAboveBarEnabled = YES;//数值显示在柱形的上面还是下面 self.barChartView.drawHighlightArrowEnabled = NO;//点击柱形图是否显示箭头 self.barChartView.drawBarShadowEnabled = NO;//是否绘制柱形的阴影背景
2.barChartView的交互设置
self.barChartView.scaleYEnabled = NO;//取消Y轴缩放
self.barChartView.doubleTapToZoomEnabled = NO;//取消双击缩放 self.barChartView.dragEnabled = YES;//启用拖拽图表 self.barChartView.dragDecelerationEnabled = YES;//拖拽后是否有惯性效果 self.barChartView.dragDecelerationFrictionCoef = 0.9;//拖拽后惯性效果的摩擦系数(0~1),数值越小,惯性越不明显
3.设置barChartView的X轴样式
首先需要先获取到barChartView
的X轴,然后进行设置.
通过barChartView
的xAxis
属性获取到X轴,代码如下:
hartXAxis *xAxis = self.barChartView.xAxis;
设置X轴样式的代码如下:
ChartXAxis *xAxis = self.barChartView.xAxis;
xAxis.axisLineWidth = 1;//设置X轴线宽
xAxis.labelPosition = XAxisLabelPositionBottom;//X轴的显示位置,默认是显示在上面的
xAxis.drawGridLinesEnabled = NO;//不绘制网格线 xAxis.spaceBetweenLabels = 4;//设置label间隔,若设置为1,则如果能全部显示,则每个柱形下面都会显示label xAxis.labelTextColor = [UIColor brownColor];//label文字颜色
4.设置barChartView的Y轴样式
barChartView
默认样式中会绘制左右两侧的Y轴,首先需要先隐藏右侧的Y轴,代码如下:
self.barChartView.rightAxis.enabled = NO;//不绘制右边轴
接着开始设置左侧Y轴的样式.
首先设置Y轴轴线的样式,代码如下:
leftAxis.forceLabelsEnabled = NO;//不强制绘制制定数量的label
leftAxis.showOnlyMinMaxEnabled = NO;//是否只显示最大值和最小值
leftAxis.axisMinValue = 0;//设置Y轴的最小值 leftAxis.startAtZeroEnabled = YES;//从0开始绘制 leftAxis.axisMaxValue = 105;//设置Y轴的最大值 leftAxis.inverted = NO;//是否将Y轴进行上下翻转 leftAxis.axisLineWidth = 0.5;//Y轴线宽 leftAxis.axisLineColor = [UIColor blackColor];//Y轴颜色
通过labelCount
属性设置Y轴要均分的数量.
在这里要说明一下,设置的labelCount
的值不一定就是Y轴要均分的数量,这还要取决于forceLabelsEnabled
属性,如果forceLabelsEnabled等于YES, 则强制绘制指定数量的label, 但是可能不是均分的.代码如下:
ChartYAxis *leftAxis = self.barChartView.leftAxis;//获取左边Y轴
leftAxis.labelCount = 5;
leftAxis.forceLabelsEnabled = NO;
设置Y轴上标签的样式,代码如下:
leftAxis.labelPosition = YAxisLabelPositionOutsideChart;//label位置
leftAxis.labelTextColor = [UIColor brownColor];//文字颜色
leftAxis.labelFont = [UIFont systemFontOfSize:10.0f];//文字字体
设置Y轴上标签显示数字的格式,代码如下:
leftAxis.valueFormatter = [[NSNumberFormatter alloc] init];//自定义格式
leftAxis.valueFormatter.positiveSuffix = @" $";//数字后缀单位
设置Y轴上网格线的样式,代码如下:
leftAxis.gridLineDashLengths = @[@3.0f, @3.0f];//设置虚线样式的网格线
leftAxis.gridColor = [UIColor colorWithRed:200/255.0f green:200/255.0f blue:200/255.0f alpha:1];//网格线颜色 leftAxis.gridAntialiasEnabled = YES;//开启抗锯齿
在Y轴上添加限制线,代码如下:
ChartLimitLine *limitLine = [[ChartLimitLine alloc] initWithLimit:80 label:@"限制线"];
limitLine.lineWidth = 2;
limitLine.lineColor = [UIColor greenColor];
limitLine.lineDashLengths = @[@5.0f, @5.0f];//虚线样式 limitLine.labelPosition = ChartLimitLabelPositionRightTop;//位置 [leftAxis addLimitLine:limitLine];//添加到Y轴上 leftAxis.drawLimitLinesBehindDataEnabled = YES;//设置限制线绘制在柱形图的后面
5.设置barChartView的其它样式
通过legend
获取到图例对象,然后把它隐藏掉,代码如下:
self.barChartView.legend.enabled = NO;//不显示图例说明
隐藏描述文字,代码如下:
self.barChartView.descriptionText = @"";//不显示,就设为空字符串即可
三、为barChartView的提供数据
为barChartView
提供数据是通过其data
属性提供的,首先需要创建BarChartData数据对象,代码如下:
//为柱形图设置数据
- (BarChartData *)setData{int xVals_count = 12;//X轴上要显示多少条数据double maxYVal = 100;//Y轴的最大值 //X轴上面需要显示的数据 NSMutableArray *xVals = [[NSMutableArray alloc] init]; for (int i = 0; i < xVals_count; i++) { [xVals addObject:[NSString stringWithFormat:@"%d月", i+1]]; } //对应Y轴上面需要显示的数据 NSMutableArray *yVals = [[NSMutableArray alloc] init]; for (int i = 0; i < xVals_count; i++) { double mult = maxYVal + 1; double val = (double)(arc4random_uniform(mult)); BarChartDataEntry *entry = [[BarChartDataEntry alloc] initWithValue:val xIndex:i]; [yVals addObject:entry]; } //创建BarChartDataSet对象,其中包含有Y轴数据信息,以及可以设置柱形样式 BarChartDataSet *set1 = [[BarChartDataSet alloc] initWithYVals:yVals label:nil]; set1.barSpace = 0.2;//柱形之间的间隙占整个柱形(柱形+间隙)的比例 set1.drawValuesEnabled = YES;//是否在柱形图上面显示数值 set1.highlightEnabled = NO;//点击选中柱形图是否有高亮效果,(双击空白处取消选中) [set1 setColors:ChartColorTemplates.material];//设置柱形图颜色 //将BarChartDataSet对象放入数组中 NSMutableArray *dataSets = [[NSMutableArray alloc] init]; [dataSets addObject:set1]; //创建BarChartData对象, 此对象就是barChartView需要最终数据对象 BarChartData *data = [[BarChartData alloc] initWithXVals:xVals dataSets:dataSets]; [data setValueFont:[UIFont fontWithName:@"HelveticaNeue-Light" size:10.f]];//文字字体 [data setValueTextColor:[UIColor orangeColor]];//文字颜色 NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; //自定义数据显示格式 [formatter setNumberStyle:NSNumberFormatterDecimalStyle]; [formatter setPositiveFormat:@"#0.0"]; [data setValueFormatter:formatter]; return data; }
为barChartView
提供数据并设置动画效果,代码如下:
self.data = [self setData];//为柱形图提供数据self.barChartView.data = self.data; //设置动画效果,可以设置X轴和Y轴的动画效果 [self.barChartView animateWithYAxisDuration:1.0f];
四、实现barChartView的代理方法
1.点击选中柱形图时的代理方法,代码如下:
- (void)chartValueSelected:(ChartViewBase * _Nonnull)chartView entry:(ChartDataEntry * _Nonnull)entry dataSetIndex:(NSInteger)dataSetIndex highlight:(ChartHighlight * _Nonnull)highlight{NSLog(@"---chartValueSelected---value: %g", entry.value);
}
2.没有选中柱形图时的代理方法,代码如下:
- (void)chartValueNothingSelected:(ChartViewBase * _Nonnull)chartView{NSLog(@"---chartValueNothingSelected---");
}
当选中一个柱形图后,在空白处双击,就可以取消选择,此时会回调此方法.
3.捏合放大或缩小柱形图时的代理方法,代码如下:
- (void)chartScaled:(ChartViewBase * _Nonnull)chartView scaleX:(CGFloat)scaleX scaleY:(CGFloat)scaleY{NSLog(@"---chartScaled---scaleX:%g, scaleY:%g", scaleX, scaleY); }
4.拖拽图表时的代理方法
- (void)chartTranslated:(ChartViewBase * _Nonnull)chartView dX:(CGFloat)dX dY:(CGFloat)dY{NSLog(@"---chartTranslated---dX:%g, dY:%g", dX, dY); }
运行结果如下:
Demo地址:BarChartDemo.
转载于:https://www.cnblogs.com/wanghuaijun/p/5587746.html
iOS使用Charts框架绘制—柱形图相关推荐
- ios 绘制线框_iOS使用Charts框架绘制折线图
首先先看一下效果: 折线图 一. 初始化折线图对象 创建一个折线图的用到的类是LineChartView.h, 代码如下: self.LineChartView = [[LineChartView a ...
- iOS 使用Charts框架 折线,柱状,K线,饼状,雷达全攻略
我是前言: 大约几个月前我写了一篇文章, 文中简单地介绍了Charts两种图表的样式的使用, 不过有种意犹未尽的感觉, 利用周末的空闲时间再次看了看, 有了新的收获, 今天发出来,分享给大家, 来稍加 ...
- cahrt框架 ios_iOS使用Charts框架绘制—折线图
首先先看一下效果: 折线图 一. 初始化折线图对象 创建一个折线图的用到的类是LineChartView.h, 代码如下: self.LineChartView = [[LineChartView a ...
- iOS Charts裤绘制蜡烛图
Charts 是目前对于绘制各种图表来说相当强大的开源库,底层是基于swift开发的.前两篇文章已经讲过charts的用途及功能,同时使用Charts去绘制曲线图,今天来分享一下绘制蜡烛图的方法. 前 ...
- 用Java绘制柱形图_Java使用JFreeChart绘制柱形图
JFreeChart是JAVA平台上的一个开放的图表绘制类库.它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计.JFreeChar ...
- Ios常用第三方框架(一)
一.UI框架 下拉刷新 EGOTableViewPullRefresh - 最早的下拉刷新控件. SVPullToRefresh - 下拉刷新控件. MJRefresh - 仅需一行代码就可以为UIT ...
- charts框架 横向 纵向柱状图
实现效果如下,除了基础的柱状图实现,主要增加了,x ,y 轴的自定义title,可以显示汉字而不是数值.最近一直做charts的集成,所以把心得给大家介绍一下.避免走弯路.由于网上IOS相关的demo ...
- 常用iOS、Mac框架和库及常用中文开发博客
常用iOS.Mac框架和库及常用中文开发博客 文章来源:http://www.th7.cn/Program/IOS/201507/506590.shtml 目录 UI 下拉刷新 模糊效果 AutoLa ...
- iOS系统整体框架及类继承框架图
iOS系统整体框架及类继承框架图 文章目录 iOS系统整体框架及类继承框架图 前言 一.系统架构 二.Cocoa框架 三.Cocoa框架的类继承体系 1.Foundation框架类继承体系 2.UIK ...
最新文章
- HPU组队赛B:问题(二进制枚举)
- spark代码连接hive_Spark SQL入门到实战之(7)spark连接hive(spark-shell和eclipse两种方式)...
- SAP云平台上的ABAP编程环境能做哪些事情
- 掌握基于AOP事务管理
- Github git 命令下载加速
- HTML5 Canvas的基本用法
- zabbix监控搭建以及客户端安装
- jenkins+postman+newman环境搭建自动化测试
- Rtsp之信令交互流程
- win7 企业版MAK神key win7企业版激活码
- html 竖排导航条,html 导航栏
- 最直白的编译原理-基础知识(清华-王书3版)
- 2020湖南省技能竞赛获奖名单_2020技能竞赛丨湖南省职业院校技能竞赛我校赛点圆满闭幕...
- java swing GUI 俄罗斯方块小游戏,适合初级小白
- LCS (动态规划)
- 阿里云服务器ecs从购买到上传网站详细教程
- 1.12 DICOM彩色图像
- 探索未来|一文看懂小米年度技术峰会·硬件专场
- day36 cookiessession
- 计算机课拔线头检讨书,实验室检讨书.doc