常见绘图框架-(Charts)
swift 出来后有很多优秀的第三方绘图、动画框架,最近项目需要使用了 Charts
Github: https://github.com/danielgindi/Charts
因为是在Object-c工程上使用,所以使用cocoapod 工具导入,省了很多麻烦
podfile:
target 'DianLeIE’
pod 'Charts', '~> 3.0.0'
pod 'Realm', '~> 2.0.2'
use_frameworks!
在开始使用的时候遇到了一些问题,因为之前用core plote 第三绘图,很多都需要自己自定义,但是在Charts 上预留了很多自定义的方法,在使用时就不需要过多的计算,可能就是因为这个原因所以在github上star 很高,并且这个还有安卓版,坑的地方就是是看安卓使用文档,不过还是很容易看懂的,字面意思差不多。
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #703daa }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000; min-height: 16.0px }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #3e1e81 }
p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #008400 }
span.s1 { }
span.s2 { color: #4f8187 }
span.s3 { color: #703daa }
span.s4 { color: #3e1e81 }
span.s5 { color: #272ad8 }
span.s6 { color: #ba2da2 }
span.s7 { color: #000000 }
span.s8 { color: #008400 }
span.s9 { font: 14.0px "PingFang SC"; color: #008400 }
_chartView = [[LineChartView alloc] initWithFrame:CGRectMake(0, 0, frame.size.width, frame.size.height)];
_chartView.delegate = self;
_chartView.chartDescription.enabled = NO;
_chartView.borderColor = [UIColor blackColor];
_chartView.dragEnabled = YES; //是否允许拖拽
//X缩放
[_chartView setScaleXEnabled:YES];
//Y缩放
[_chartView setScaleYEnabled:NO];
_chartView.pinchZoomEnabled = NO;
//setExtraOffsets 设置偏移位置 这里需要调,不然影响xAxis label 与 线条上对应的位置有误差
[_chartView setExtraOffsetsWithLeft:5.f top:0.f right:30.f bottom:0.f];
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #008400 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #703daa }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000 }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #d12f1b }
p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #3e1e81 }
p.p6 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000; min-height: 16.0px }
p.p7 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #4f8187 }
span.s1 { color: #000000 }
span.s2 { }
span.s3 { font: 14.0px "PingFang SC" }
span.s4 { color: #4f8187 }
span.s5 { color: #703daa }
span.s6 { color: #3e1e81 }
span.s7 { color: #008400 }
span.s8 { font: 14.0px "PingFang SC"; color: #008400 }
span.s9 { color: #272ad8 }
span.s10 { color: #ba2da2 }
span.s11 { color: #31595d }
span.s12 { color: #d12f1b }
//设置图例
ChartLegend *l = _chartView.legend;
l.form = ChartLegendFormSquare; //图例样式
l.font = [UIFont fontWithName:@"HelveticaNeue-Light" size:11.f];
l.textColor = [UIColor blackColor];
l.horizontalAlignment = ChartLegendHorizontalAlignmentRight; //水平方向位置
l.verticalAlignment = ChartLegendVerticalAlignmentBottom; //垂直方向位置
l.orientation = ChartLegendOrientationHorizontal;
l.drawInside = NO;
//X轴属性设置
ChartXAxis *xAxis = _chartView.xAxis;
xAxis.labelFont = [UIFont systemFontOfSize:11.f];
xAxis.labelTextColor = [UIColor hex:@"666666"]; //009b34
xAxis.drawGridLinesEnabled = NO;
xAxis.drawAxisLineEnabled = YES;
_xAxisFormatter = [[DateValueFormatter alloc] init];
xAxis.valueFormatter = self; //自定xAxis label值样式
xAxis.labelCount = 5;
xAxis.labelPosition = ChartLimitLabelPositionLeftBottom; //x轴位置
xAxis.labelRotationAngle = -20;
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "PingFang SC"; color: #008400 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000 }
span.s1 { font: 14.0px Menlo; color: #000000 }
span.s2 { font: 14.0px Menlo }
span.s3 { }
span.s4 { color: #703daa }
span.s5 { color: #4f8187 }
span.s6 { color: #31595d }
span.s7 { color: #d12f1b }
span.s8 { color: #008400 }
span.s9 { color: #272ad8 }
span.s10 { color: #ba2da2 }
span.s11 { font: 14.0px "PingFang SC"; color: #008400 }
span.s12 { color: #3e1e81 }
//左侧y轴属性设置
ChartYAxis *leftAxis = _chartView.leftAxis;
leftAxis.labelTextColor = [UIColor hex:@"9d9d9d"]; //9d9d9d
leftAxis.axisMinimum = 0.0; //设置leftAxis label 最小值为0
leftAxis.drawGridLinesEnabled = YES;
leftAxis.drawZeroLineEnabled = NO;
leftAxis.granularityEnabled = NO;
leftAxis.drawAxisLineEnabled = NO;
leftAxis.xOffset = 15; //x 位置偏移
[leftAxis setGridColor:[UIColor hex:@"efeff4"]]; //设置y轴表格颜色值
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #008400 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000 }
span.s1 { color: #000000 }
span.s2 { }
span.s3 { font: 14.0px "PingFang SC" }
span.s4 { color: #703daa }
span.s5 { color: #4f8187 }
span.s6 { color: #272ad8 }
span.s7 { color: #ba2da2 }
//右侧Y轴属性设置
ChartYAxis *rightAxis = _chartView.rightAxis;
rightAxis.axisMaximum = 0 ;
rightAxis.axisMinimum = 0 ;
rightAxis.drawAxisLineEnabled = NO;
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #008400 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000 }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #4f8187 }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000; min-height: 16.0px }
span.s1 { color: #000000 }
span.s2 { }
span.s3 { font: 14.0px "PingFang SC" }
span.s4 { color: #4f8187 }
span.s5 { color: #703daa }
span.s6 { color: #3e1e81 }
span.s7 { color: #272ad8 }
span.s8 { color: #31595d }
span.s9 { color: #d12f1b }
//继承ChartMarkerImage 自定义提示框 这里BalloonMarker 是Charts Demo中找到了,自个加一下修改
_marker = [[BalloonMarker alloc]
initWithColor: [UIColor colorWithWhite:180/255. alpha:1.0]
font: [UIFont systemFontOfSize:12.0]
textColor: [UIColor hex:@"666666"]
insets: UIEdgeInsetsMake(0, 0, 0, 0)];
_marker.chartView = _chartView;
_marker.image = [UIImage imageNamed:@"icon_marker"];
_marker.minimumSize = CGSizeMake(80.f, 40.f);
_chartView.marker = _marker;
//最坑的在这里,设置X轴最大显示范围 必须在设置数据 后加入,不然因为填充数据后重新计算会导致错误,并且要移除charView上历史视图
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000; min-height: 16.0px }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #3e1e81 }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #4f8187 }
span.s1 { }
span.s2 { color: #ba2da2 }
span.s3 { color: #31595d }
span.s4 { color: #703daa }
span.s5 { color: #000000 }
span.s6 { color: #4f8187 }
span.s7 { color: #272ad8 }
span.s8 { color: #3e1e81 }
[self setDataCount:dataArry.count Data:dataArry dateArry:dateArry];
[_chartView setVisibleXRangeMaximum:5.0f];
[_chartView setVisibleXRangeMinimum:5.0f];
[_chartView moveViewToX:_dateArry.count+1];
如果最开始使用建议下载Demo并且查看安卓版文档:https://github.com/PhilJay/MPAndroidChart/wiki
一些常见的问题也可在这查看:https://github.com/PhilJay/MPAndroidChart/issues
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #1337ff }
span.s1 { }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #3e1e81 }
span.s1 { }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000 }
span.s1 { }
常见绘图框架-(Charts)的更多相关文章
- 常见MVC框架比较
常见MVC框架比较 运行性能上: Jsp+servlet>struts1>spring mvc>struts2+freemarker>>struts2,ognl,值栈. ...
- 陈灯WGF双缓冲绘图框架
“木丸子童屋”,专售各类儿童玩具,价格优惠,请大家多多支持:http://shop65552598.taobao.com/ WGF(windows graphic foundation)为window ...
- 认识ExtJS(04)--常见Web框架的ExtJS改造
常见Web框架的ExtJS改造 怎样开始改造工作? 改造主要集中在对表现层的修改,底层的数据库访问不需要进行任何的变动.也就是说主要集中早这2个方面:一方面是表现部分即是JSP页面:另一方面是客户端与 ...
- iOS绘图框架CoreGraphics分析
由于CoreGraphics框架有太多的API,对于初次接触或者对该框架不是十分了解的人,在绘图时,对API的选择会感到有些迷茫,甚至会觉得iOS的图形绘制有些繁琐.因此,本文主要介绍一下iOS的绘图 ...
- iOS - Quartz 2D 第三方框架 Charts 绘制图表
1.Charts 简介 使用第三方框架 Charts 绘制 iOS 图表.GitHub 源码 Charts Charts 是一款用于绘制图表的框架,可以绘制柱状图.折线图.K线图.饼状图等.Chart ...
- 7个常见Javascript框架介绍
设计开发中的“框架”指一套包含工具.函数库.约定,以及尝试从常用任务中抽象出可以复用的通用模块,目标是使设计师和开发人员把重点放在任务项目所特有的方面,避免重复开发.通俗的讲,框架就是最常用的java ...
- 常见JAVA框架
Spring Framework [Java开源JEE框架] Spring是一个解决了许多在J2EE开发中常见的问题的强大框架. Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不 ...
- VUE 与其他常见前端框架对比
对比其他框架(转官方文档) 这个页面无疑是最难编写的,但我们认为它也是非常重要的.或许你曾遇到了一些问题并且已经用其他的框架解决了.你来这里的目的是看看 Vue 是否有更好的解决方案.这也是我们在此想 ...
- 2019年Web前端最新导航(常见前端框架、前端大牛)
本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 前言 本文列出了很多与前端有关的常见网站.博客.工具等,整体来看比较权威.有些东西已经 ...
随机推荐
- windows系统下简单nodej.s环境配置 安装
国内目前关注最高,维护最好的一个关于nodejs的网站应该是http://www.cnodejs.org/ windows系统下简单nodejs环境配置. 第一步:下载安装文件 下载地址:官网 htt ...
- gpio高阻态
配置gpio为高阻态:将gpio设为GPIO_INPUT,GPIO_NO_PULL即可
- prim算法查找最小生成树
我们在图的定义中说过,带有权值的图就是网结构.一个连通图的生成树是一个极小的连通子图,它含有图中全部的顶点,但只有足以构成一棵树的n-1条边.所谓的最小成本,就是n个顶点,用n-1条边把一个连通图连接 ...
- web 音频文件自动播放(兼容所有浏览器)
function AudioPerform() { var ua = navigator.userAgent.toLowerCase(); var audiopath = "$!{Templ ...
- .net 生成 静态页面
.net 生成 静态页面 <!--Main.Aspx--> <%@ page language="C#" %> <%@ import namespac ...
- iOS屏幕适配
## iOS屏幕适配 ### iOS屏幕适配发展史 1> iPhone4以前(没有iPad) * 不需要屏幕适配 2> iPad.iPhone5等设备出现 * 需要做横竖屏适配 * aut ...
- OpenGL学习笔记5——嵌入Qt框架
学习OpenGL也有段时间了,前几篇将GL最基本的画图过程解析了一下,后面进阶的就随项目需要再学.因为之前一直是用glut这个实用工具包来开发很方便,但是会附带一个控制台的窗口,实在觉得有些low,因 ...
- C++设计模式-Bridge桥接模式
作用:将抽象部份与它的实现部份分离,使它们都可以独立地变化. 将抽象(Abstraction)与实现(Implementation)分离,使得二者可以独立地变化. 桥接模式号称设计模式中最难理解的模式 ...
- Replication
Peer-to-peer replication: http://msdn.microsoft.com/en-us/library/ms151196(v=sql.120).aspx Merge rep ...
- 数据回复之TestDisk的使用
1,选择[No Log]或者是[Create]进入 2.选择好要恢复的硬盘,回车 3.选择Intel或者其他的系统,大多数选择intel(windows)使用,回车确认 4.选择[Analyse](分 ...