常见绘图框架-(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 { }

时间: 2024-11-03 01:33:46

常见绘图框架-(Charts)的相关文章

绘图框架新需求

最近都是在这个绘图框架上进行迭代,主要是增加一些分形的绘图算法,在实现Fractal Tree时发现这个框架已经不能满足我的需求了,因为每当我需要调整一些参数,例如分形树的角度,长度,迭代次数等参数时都需要重新修改编译代码,很不方便.所以最近需要给这个框架增加新的功能,要求每运行一个绘图算法时要根据这个分形图案的实际情况加入算法参数设置,颜色设置等功能,另外一个需求是要给这个框架添加异常处理.

SpringMVC背景介绍及常见MVC框架比较

一.Spring MVC 背景介绍 Spring框架提供了构建Web应用程序的全功能MVC模块.使用Spring可插入的MVC架构,可以选择是使用内置的Spring Web框架还是Struts这样的Web框架.通过策略接口,Spring框架是高度可配置的,而且包含多种视图技术,例如JavaServer Pages(JSP)技术.Velocity.Tiles.iText和POL.Spring MVC框架并不知道使用的视图,所以不会强迫您只使用JSP技术.Spring MVC分离了控制器.模型对象.

常见MVC框架比较

常见MVC框架比较 运行性能上: Jsp+servlet>struts1>spring mvc>struts2+freemarker>>struts2,ognl,值栈. 开发效率上,基本正好相反.值得强调的是,spring mvc开发效率和struts2不相上下. Struts2的性能低的原因是因为OGNL和值栈造成的.所以,如果你的系统并发量高,可以使用freemaker进行显示,而不是采用OGNL和值栈.这样,在性能上会有相当大得提高.

7个常见Javascript框架介绍

设计开发中的“框架”指一套包含工具.函数库.约定,以及尝试从常用任务中抽象出可以复用的通用模块,目标是使设计师和开发人员把重点放在任务项目所特有的方面,避免重复开发.通俗的讲,框架就是最常用的javascript框架和Web应用框架,当然,还有CSS框架. 下面我们介绍一些比较常见的Javascript框架,高手跳过,才学JS和ajax的朋友则应该好好了解一下. jQuery jquery是一个快速.简洁的JavaScript框架,帮助你简化查询DOM对象,处理事件,制作动画,和处理Ajax交互

常见JAVA框架

 Spring Framework [Java开源JEE框架] Spring是一个解决了许多在J2EE开发中常见的问题的强大框架. Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯.Spring的架构基础是基于使用JavaBean属性的Inversion of Control容器.然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的. Spring提供了唯一的数据访问抽象,包括简单和有效率的J

常见ORM框架理解

JAVA编程免不了和数据库打交道,那么如何高效便捷地操作数据库,也是一个需要而对的问题,原生的基于JDBC的方式当然是非常低效,而且要写一大堆无用的模板代码,不值得选取.好在我们不需要重复的造轮子,目前已经有很多优秀的ORM框架可供使用了,常见的比如Hibernate, Mybatis,TopLink等,JAVA EE3.0规范中提出的JPA,同样也是十分的好用,所以有时面试官也会问一下些和这个相关的面试题,下面整理一些个人遇到,或者网上经常看到的一些面试题 . 一.什么是JPA,为什么要有JP

Android开发使用的常见第三方框架汇总

本文转载:http://blog.csdn.net/liuhaomatou/article/details/44857005 1.volley 项目地址 https://github.com/smanikandan14/Volley-demo (1)  JSON,图像等的异步下载: (2)  网络请求的排序(scheduling) (3)  网络请求的优先级处理 (4)  缓存 (5)  多级别取消请求 (6)  和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)

Android开发使用的常见第三方框架

1.SlidingMenu 官网:https://github.com/jfeinstein10/SlidingMenu 网友使用:http://blog.csdn.net/yangyu20121224/article/details/9255829 2.android-async-http https://github.com/loopj/android-async-http 3.PullToRefresh 下拉刷新 https://github.com/chrisbanes/Android-

常见计算框架算子层对比

背景 前段时间在为内部自研的计算框架设计算子层,参考对比了一些开源的计算框架的算子层,本文做一个粗粒度的梳理. 下面这张图是我对计算框架抽象层次的一个拆分,具体可以参考上周日杭州Spark meetup上我做的Spark SQL分享 slides. Pig-latin Hadoop MR上的DSL,面向过程,适用于large-scale的数据分析.语法很美,可惜只适合CLI . A = load 'xx' AS (c1:int, c2:chararray, c3:float) B = GROUP