前言。

从2016年4月14日开始,本人着手开发了JHChart图表工具库。经过断断续续的开发,截止到现在,已经实现了折线图、柱状图、饼状图、环形图和表格样式的图表功能。为了方便使用,我已经将一个简单的demo上传到github上面,但是这些显然不够,我们还需要一个更加明了的方式介绍这个库的用法,打造出各种我们需要的效果,如下为至今最新版本教程


集成JHChart

集成JHChart有两种方法

  • 第一种用法简单且版本保持最新,直接去demo中将JHChart库文件夹拖入你的项目中即可
  • 第二种使用cocoapod导入(版本可能非最新),在Podfile中插入如下代码:

    pod 'JHChart','~> 1.0.3'

(如果对cocoapods使用不熟悉,可以去官网细细琢磨,在这里就不过多赘述了。)

经过上面的集成,编译一下,如果没有报错就成功将代码库引入项目了,如果有报错,请再仔细查看相关步骤是否正确哦。


JHChart简介

JHChart的图表主要类库及样式包括:

  • JHLineChart 折线/曲线图类库
  • JHColumnChart 柱状图
  • JHPieChart 饼状图
  • JHRingChart 环状图
  • JHTableChart 表格图
  • JHRadarChart 雷达图

工作日志如下:

  • 2016 ~
  • 4.14日上传第一版 折线图 包括不同的象限内折线图 将会持续更新 效果图如下
  • 5.3日上传更新版 新增了饼状图初稿
  • 6.5日添加了环状图
  • 8.8日添加了柱状图
  • 8.25日添加了表格图
  • 9.1日添加折线图的曲线样式及内容填充效果
  • 10.20添加了雷达图
  • 11.30修复了多个bug
  • 12.13修复折线图Y轴数值过大时显示异常bug
  • 12.13发布cocoapod新版本1.0.3

***
## 构建折线/曲线图 --JHLineChart

描述:JHLineChart可以创建数据源多样的线性图表,包括折线和曲线图,可以根据数据源判断是否为多条线性表。并且,可以根据需求设置是否有区间填充颜色。同时该表支持不同象限的不同需求,这里只是设置了第一象限的示例,其他象限使用方法一致。

  1. /* 创建表对象 */
  2. JHLineChart *lineChart = [[JHLineChart alloc] initWithFrame:CGRectMake(10, 100, k_MainBoundsWidth-20, 300) andLineChartType:JHChartLineValueNotForEveryX];
  3. /* X轴的刻度值 可以传入NSString或NSNumber类型 并且数据结构随折线图类型变化而变化 详情看文档或其他象限X轴数据源示例*/
  4. lineChart.xLineDataArr = @[@"0",@"1",@"2",@3,@4,@5,@6,@7];
  5. /* 折线图的不同类型 按照象限划分 不同象限对应不同X轴刻度数据源和不同的值数据源 */
  6. lineChart.lineChartQuadrantType = JHLineChartQuadrantTypeFirstQuardrant;
  7. /* 数据源数组 如果是一组数据 只需一个数组 如果是多组数据 需要传入多组数据 */
  8. lineChart.valueArr = @[@[@"1",@"12",@"1",@6,@4,@9,@6,@7],@[@"3",@"1",@"2",@16,@2,@3,@5,@10]];
  9. /* 值折线的折线颜色 默认暗黑色*/
  10. lineChart.valueLineColorArr =@[ [UIColor purpleColor], [UIColor brownColor]];
  11. /* 值点的颜色 默认橘黄色*/
  12. lineChart.pointColorArr = @[[UIColor orangeColor],[UIColor yellowColor]];
  13. /* X和Y轴的颜色 默认暗黑色 */
  14. lineChart.xAndYLineColor = [UIColor blackColor];
  15. /* XY轴的刻度颜色 m */
  16. lineChart.xAndYNumberColor = [UIColor blueColor];
  17. /* 坐标点的虚线颜色 */
  18. lineChart.positionLineColorArr = @[[UIColor blueColor],[UIColor greenColor]];
  19. /* 设置是否填充内容 默认为否 */
  20. lineChart.contentFill = YES;
  21. /* 设置为曲线路径 */
  22. lineChart.pathCurve = YES;
  23. /* 设置填充颜色数组 */
  24. lineChart.contentFillColorArr = @[[UIColor colorWithRed:0.500 green:0.000 blue:0.500 alpha:0.468],[UIColor colorWithRed:0.500 green:0.214 blue:0.098 alpha:0.468]];
  25. [self.view addSubview:lineChart];
  26. /* 开始动画 */
  27. [lineChart showAnimation];

效果图:


构建柱状图 --JHColumnChart

描述:JHColumnChart是一个可滚动的柱状图,您可以设置灵活的数据源数组来绘制您需要的样式,它不仅支持设置不同的柱状体颜色,还给您提供了多个描述属性,用来标记不同的样式

  1. /* 创建对象 */
  2. JHColumnChart *column = [[JHColumnChart alloc] initWithFrame:CGRectMake(0, 100, k_MainBoundsWidth, k_MainBoundsWidth)];
  3. /* 创建数据源数组 每个数组即为一个模块数据 例如第一个数组可以表示某个班级的不同科目的平均成绩 下一个数组表示另外一个班级的不同科目的平均成绩 */
  4. column.valueArr = @[
  5. @[@12,@15,@20],
  6. @[@22,@15,@20],
  7. @[@12,@5,@40],
  8. @[@2,@15,@20]
  9. ];
  10. /* 该点 表示原点距左下角的距离 */
  11. column.originSize = CGPointMake(30, 30);
  12. /* 第一个柱状图距原点的距离 */
  13. column.drawFromOriginX = 10;
  14. /* 柱状图的宽度 */
  15. column.columnWidth = 40;
  16. /* X、Y轴字体颜色 */
  17. column.drawTextColorForX_Y = [UIColor greenColor];
  18. /* X、Y轴线条颜色 */
  19. column.colorForXYLine = [UIColor greenColor];
  20. /* 每个模块的颜色数组 例如A班级的语文成绩颜色为红色 数学成绩颜色为绿色 */
  21. column.columnBGcolorsArr = @[[UIColor redColor],[UIColor greenColor],[UIColor orangeColor]];
  22. /* 模块的提示语 */
  23. column.xShowInfoText = @[@"A班级",@"B班级",@"C班级",@"D班级"];
  24. /* 开始动画 */
  25. [column showAnimation];
  26. [self.view addSubview:column];

效果如下:


饼状图 --JHPieChart

描述:JHPieChart可根据您的数据源和视图大小设置,自动生成大小合适,并且有提示动画的饼状图。当您点击某块饼状图时,会动画显示当前的饼块信息。

  1. JHPieChart *pie = [[JHPieChart alloc] initWithFrame:CGRectMake(100, 100, 321, 421)];
  2. pie.center = CGPointMake(CGRectGetMaxX(self.view.frame)/2, CGRectGetMaxY(self.view.frame)/2);
  3. /* 饼状图数值 会自动根据数值计算百分比 */
  4. pie.valueArr = @[@18,@10,@25,@40,@18,@10,@25,@40,@18,@10,@15,@12,@30,@18];
  5. /* 每一个扇形区的描述 必须要填 并且数量必须和饼状图数值个数相同 */
  6. pie.descArr = @[@"第一个元素",@"第二个元素",@"第三个元素",@"第四个元素",@"5",@"6",@"7",@"8",@"9",@"10",@"23",@"12",@"21",@"30"];
  7. pie.backgroundColor = [UIColor whiteColor];
  8. [self.view addSubview:pie];
  9. /* 触碰某块饼图时动画偏移值 */
  10. pie.positionChangeLengthWhenClick = 15;
  11. /* 动画展示 */
  12. [pie showAnimation];

效果图如下:


环形图 --JHRingChart

JHRingChart 根据您的数据源,自动计算相关数据比例,动画展示环状图,并且从每个环段引出相关信息提示

  1. /* 创建对象 */
  2. JHRingChart *ring = [[JHRingChart alloc] initWithFrame:CGRectMake(0, 100, k_MainBoundsWidth, k_MainBoundsWidth)];
  3. /* 背景颜色 */
  4. ring.backgroundColor = [UIColor blackColor];
  5. /* 数据源数组 只需要传入值 相应的比例会自动计算 */
  6. ring.valueDataArr = @[@"0.5",@"5",@"2",@"10",@"6"];
  7. /* 环图的宽度 */
  8. ring.ringWidth = 35.0;
  9. /* 每段环图的填充颜色 */
  10. ring.fillColorArray = @[[UIColor colorWithRed:1.000 green:0.783 blue:0.371 alpha:1.000], [UIColor colorWithRed:1.000 green:0.562 blue:0.968 alpha:1.000],[UIColor colorWithRed:0.313 green:1.000 blue:0.983 alpha:1.000],[UIColor colorWithRed:0.560 green:1.000 blue:0.276 alpha:1.000],[UIColor colorWithRed:0.239 green:0.651 blue:0.170 alpha:1.000]];
  11. /* 动画展示 */
  12. [ring showAnimation];
  13. [self.view addSubview:ring];

效果图如下:


表格 --JHTableChart

描述:JHTableChart用于静态绘制样式多变的表格视图,所有的单元格展示样式取决于数据源,不需要特殊的处理某一个单元格,十分灵活易用

  1. /* 创建对象 */
  2. JHTableChart *table = [[JHTableChart alloc] initWithFrame:CGRectMake(10, 64, k_MainBoundsWidth-20, k_MainBoundsHeight)];
  3. /* 表名称 */
  4. table.tableTitleString = @"全选jeep自由光";
  5. /* 每一列的声明 其中第一个如果需要分别显示行和列的说明 可以用‘|’分割行和列 */
  6. table.colTitleArr = @[@"属性|配置",@"外观",@"内饰",@"数量"];
  7. /* 列的宽度数组 从第一列开始 */
  8. table.colWidthArr = @[@100.0,@120.0,@70,@100];
  9. /* 表格体的文字颜色 */
  10. table.bodyTextColor = [UIColor redColor];
  11. /* 最小的方格高度 */
  12. table.minHeightItems = 40;
  13. /* 表格的线条颜色 */
  14. table.lineColor = [UIColor orangeColor];
  15. /* 数据源数组 按照从上到下表示每行的数据 如果其中一行中某列存在多个单元格 可以再存入一个数组中表示 */
  16. table.dataArr = @[
  17. @[@"2.4L优越版",@"2016皓白标准漆蓝棕",@[@"鸽子白",@"鹅黄",@"炫彩绿"],@[@"4"]],
  18. @[@"2.4专业版",@[@"2016皓白标准漆蓝棕",@"2016晶黑珠光漆黑",@"2016流沙金珠光漆蓝棕"],@[@"鸽子白",@"鹅黄",@"炫彩绿",@"彩虹多样色"],@[@"4",@"5",@"3"]],
  19. @[@"2.4豪华版",@[@"4",@"3",@"2"]],
  20. @[@"2.4旗舰版"]
  21. ];
  22. /* 显示 无动画效果 */
  23. [table showAnimation];
  24. [self.view addSubview:table];
  25. /* 设置表格的布局 其中 [table heightFromThisDataSource] 为自动按照当前数据源计算所需高度 */
  26. table.frame = CGRectMake(10, 64, k_MainBoundsWidth-20, [table heightFromThisDataSource]);

效果图:


雷达图 --JHRadarChart

** 描述:JHRadarChart用于静态绘制雷达图,所有的单元数据来自您的自定义数据源**

  1. JHRadarChart *radarChart = [[JHRadarChart alloc] initWithFrame:CGRectMake(10, 74, k_MainBoundsWidth - 20, k_MainBoundsWidth - 20)];
  2. radarChart.backgroundColor = [UIColor whiteColor];
  3. /* 每个顶点的描述文字 */
  4. radarChart.valueDescArray = @[@"击杀",@"能力",@"生存",@"推塔",@"补兵",@"其他"];
  5. /* 基本的分层个数 即刻度的个数 */
  6. radarChart.layerCount = 5;
  7. /* Array of data sources, the need to add an array of arrays */
  8. radarChart.valueDataArray = @[@[@"80",@"40",@"100",@"76",@"75",@"50"],@[@"50",@"80",@"30",@"46",@"35",@"50"]];
  9. /* 层的背景颜色 建议设置带有透明度的颜色 */
  10. radarChart.layerFillColor = [UIColor colorWithRed:94/ 256.0 green:187/256.0 blue:242 / 256.0 alpha:0.5];
  11. /* 具体展示对象的填充颜色 */
  12. radarChart.valueDrawFillColorArray = @[[UIColor colorWithRed:57/ 256.0 green:137/256.0 blue:21 / 256.0 alpha:0.5],[UIColor colorWithRed:149/ 256.0 green:68/256.0 blue:68 / 256.0 alpha:0.5]];
  13. /* 展示 */
  14. [radarChart showAnimation];
  15. [self.view addSubview:radarChart];

效果图:

结语

到这里,我们已经将JHChart中的每种样式进行了一次演示,你可以按照这种方式,将项目所需的图表快速的生成出来。并且,JHChart将会持续更新,欢迎大家提出不同的需求和意见。喜欢的小伙伴可以给个✨


JHChart iOS图表工具库1.0.3新版本详解的更多相关文章

  1. JHChart 1.1.0 iOS图表工具库中文ReadMe

    JHChart(最新版本1.1.0) 好吧,的确当前的github上已经存有不少的iOS图表工具库,然而,当公司的项目需要图表时,几乎没有哪个第三方能够完全满足我的项目需求.无奈之下,本人不得不花费一 ...

  2. iOS 图表工具charts之CombinedChartView

    关于charts的系列视图介绍传送门: iOS 图表工具charts介绍 iOS 图表工具charts之LineChartView iOS 图表工具charts之BarChartView iOS 图表 ...

  3. iOS 图表工具charts之CandleStickChartView(K线)

    关于charts的系列视图介绍传送门: iOS 图表工具charts介绍 iOS 图表工具charts之LineChartView iOS 图表工具charts之BarChartView iOS 图表 ...

  4. iOS 图表工具charts之PieChartView

    关于charts的系列视图介绍传送门: iOS 图表工具charts介绍 iOS 图表工具charts之LineChartView iOS 图表工具charts之BarChartView iOS 图表 ...

  5. iOS 图表工具charts之BarChartView

    关于charts的系列视图介绍传送门: iOS 图表工具charts介绍 iOS 图表工具charts之LineChartView iOS 图表工具charts之BarChartView iOS 图表 ...

  6. iOS 图表工具charts之LineChartView

    关于charts的系列视图介绍传送门: iOS 图表工具charts介绍 iOS 图表工具charts之LineChartView iOS 图表工具charts之BarChartView iOS 图表 ...

  7. iOS 图表工具charts介绍

    charts是一个很好的绘图工具,功能非常强大,可以用来绘制折线,柱状图,饼状图,k线图,k线分时图,雷达图,气泡图等等,charts是一款仿照安卓 MPAndroidChart而来的一个基于swif ...

  8. appledoc导出iOS代码文档的使用和问题详解(干货篇)

    appledoc导出iOS代码文档的使用和问题详解(干货篇) 1. 简单说一下背景和自己感受 背景: 项目好像突然黄了,公司让详细写项目代码的注释并且导出文档,弄完之后就要封版. 说实话:听到这个消息 ...

  9. 基于OpenCL的深度学习工具:AMD MLP及其使用详解

    基于OpenCL的深度学习工具:AMD MLP及其使用详解 http://www.csdn.net/article/2015-08-05/2825390 发表于2015-08-05 16:33| 59 ...

随机推荐

  1. Oracle中已有数据的字段类型修改

    创建测试表 create table t_person( id varchar2(200) primary key, name varchar2(200), address varchar2(200) ...

  2. bootstrap兼容性问题

    转自--http://blog.csdn.net/chenhongwu666/article/details/41513901/ 让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstr ...

  3. css-css权威指南学习笔记6

    第八章 padding/border/margin 1.对于只包含文本的行,能改变行间距里的属性只有line-height/font-size/vertical-align. 2.对行内非替换元素应用 ...

  4. Noise Contrastive Estimation

    Notes from Notes on Noise Contrastive Estimation and Negative Sampling one sample: \[x_i \to [y_i^0, ...

  5. History lives on in this distinguished Polish city 2017/1/4

    原文 History lives on in this distinguished Polish city Though it may be ancient. KraKow, Poland, is a ...

  6. MTK MT33xx型GPS的NMEA协议解析实例

    1)解析实现 gps_main.c #include <nmea/nmea.h> #include <string.h> #include <stdio.h> #i ...

  7. ECSHOP 商品字段增加新字段的方法

    结合ecshop后台“商品编辑”.“商品录入”来谈谈如何给ecshop商品增加一个新字段,假设我们将这个新字段命名为 new_add 1.首先要修改数据表结构,给表 ecs_goods 增加新字段:n ...

  8. jetty9内嵌到应用,并在启动后加载WebApplicationInitializer,可运行jsp

    声明:本文所介绍的两功能都已经测试通过. 第一步先确保你用的是java 8,并依赖需要的相关jar包,以下是用gradle进行依赖的信息: ext { taglibsStandardVersion = ...

  9. 【前端攻略】:玩转图片Base64编码

    引言 图片处理在前端工作中可谓占据了很重要的一壁江山.而图片的 base64 编码可能相对一些人而言比较陌生,本文不是从纯技术的角度去讨论图片的 base64 编码.标题略大,不过只是希望通过一些浅显 ...

  10. 项目开发(Require + E.js)

    最近在做的几个项目,分别用了不同的框架跟方式,有个H5的项目,用了vue框架, 这个项目我还没有正式加入进去, 等手头的这个项目完成就可以去搞vue了, 现在手头的这个项目是一个招聘的项目, 用到了N ...