阅读这篇文章,指出它在国外    原文地址:https://github.com/core-plot/core-plot/wiki/High-Level-Design-Overview

强烈推荐阅读该博客:http://blog.csdn.net/kmyhy/article/details/7819661

首先,我们先看一下我们绘制图表是的区域划分:

这个图标的学习非常有必要,在以后的编程中,你会有深刻体会,各个区域的划分。和名称

2 再来看看这个CorePlot开源图形库的类的层次结构 。便于我们源代码的理解

3  再来看一下他的成员对象和各个层的树形结构

4 图表视图的动画层分析

UIView的核心动画层,CALayer并不适合产生高质量的矢量图形。而且它也不支持事件处理,因此,Core Plot layers继承于CPTLayer。而CPTLayer是CALayer的子类,仅仅只是做了扩展。

CPTLayer包括画图方法,可以绘制高质量的矢量图形。而且可以处理事件

画图方法包含例如以下:

-(void)renderAsVectorInContext:(CGContextRef)context;
-(void)recursivelyRenderInContext:(CGContextRef)context;
-(NSData *)dataForPDFRepresentationOfLayer;

当我们绘制矢量图形时,就不用重写(override)-drawInContext:方法,而是仅仅需重写-renderAsVectorInContext:方法就可以把图形会知道窗体。

5

Graphs 分析

CPTGraph是Core Plot的核心类,在coreplot中graph就是整个图表,包含:坐标轴,标签,标题,以及多个图表元素。

看一下该类的定义:

@interface CPTGraph : CPTBorderedLayer
@property (nonatomic, readwrite, copy) NSString *title; //标题
@property (nonatomic, readwrite, copy) CPTTextStyle *titleTextStyle; //标题文本格式
@property (nonatomic, readwrite, assign) CGPoint titleDisplacement; //标题位置
 @property (nonatomic, readwrite, assign) CPTRectAnchor titlePlotAreaFrameAnchor; //我眼下觉得是PlotArea的原点 @property (nonatomic, readwrite, retain) CPTAxisSet *axisSet; //坐标轴设置
@property (nonatomic, readwrite, retain) CPTPlotAreaFrame *plotAreaFrame; //PlotArea的fram
@property (nonatomic, readonly, retain) CPTPlotSpace *defaultPlotSpace; //还没理解
@property (nonatomic, readwrite, retain) NSArray *topDownLayerOrder; // @property (nonatomic, readwrite, retain) CPTLegend *legend;
@property (nonatomic, readwrite, assign) CPTRectAnchor legendAnchor;
@property (nonatomic, readwrite, assign) CGPoint legendDisplacement; -(void)reloadData;
-(void)reloadDataIfNeeded; -(NSArray *)allPlots;
-(CPTPlot *)plotAtIndex:(NSUInteger)index;
-(CPTPlot *)plotWithIdentifier:(id <NSCopying>)identifier; -(void)addPlot:(CPTPlot *)plot;
-(void)addPlot:(CPTPlot *)plot toPlotSpace:(CPTPlotSpace *)space;
-(void)removePlot:(CPTPlot *)plot;
-(void)removePlotWithIdentifier:(id <NSCopying>)identifier;
-(void)insertPlot:(CPTPlot *)plot atIndex:(NSUInteger)index;
-(void)insertPlot:(CPTPlot *)plot atIndex:(NSUInteger)index intoPlotSpace:(CPTPlotSpace *)space; -(NSArray *)allPlotSpaces;
-(CPTPlotSpace *)plotSpaceAtIndex:(NSUInteger)index;
-(CPTPlotSpace *)plotSpaceWithIdentifier:(id <NSCopying>)identifier; -(void)addPlotSpace:(CPTPlotSpace *)space;
-(void)removePlotSpace:(CPTPlotSpace *)plotSpace; -(void)applyTheme:(CPTTheme *)theme;
@end

the CPTXYGraph creates an instance of CPTXYAxisSet, andCPTXYPlotSpace

6 Plot Area

这个事我们图表显示的区域,该区域被坐标轴限制在一定方位内。能够显示栅格在该区域,每一个图表视图仅仅能有一个图标区域。

7 Plot Spaces

我这里想称Plot space为图表元素原型,比方说柱状图,他有很多其它个柱元素组成。当中的一个就是元素原型。这时个人理解

而Plot Spaces就是元素原型和坐标系的映射关系集合,

一个PLot space 元素原型会知道图表上。必需要实现下面方法:完毕数据和坐标空间的转换

-(CGPoint)plotAreaViewPointForPlotPoint:(NSDecimal *)plotPoint;
-(CGPoint)plotAreaViewPointForDoublePrecisionPlotPoint:(double *)plotPoint;
-(void)plotPoint:(NSDecimal *)plotPoint forPlotAreaViewPoint:(CGPoint)point;
-(void)doublePrecisionPlotPoint:(double *)plotPoint forPlotAreaViewPoint:(CGPoint)point;

一个graph能够包括多个原型单元的。仅仅只是我们一般经常使用地就是一个而已。

8 Plots

Plot就是一个数据在图表中的表现形式。比方条形,柱状型等。

CPTPlot的dataSource方法

@protocol CPTPlotDataSource <NSObject>  

-(NSUInteger)numberOfRecords;   

@optional  

// Implement one of the following
-(NSArray *)numbersForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndexRange:(NSRange)indexRange;
-(NSNumber *)numberForPlot:(CPPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index; @end

9 Axes

坐标轴

CPTAxis     和CPTPlotSpace有密切关系,CPTXYAxisSet包括多个CPTAxisCPTAxis中的标签元素能够自己定义的。

10 动画

版权声明:本文博客原创文章,博客,未经同意,不得转载。

CorePlot学习的更多相关文章

  1. CorePlot学习零---安装

    刚開始接触CorePlot时,网上搜到非常多相关文章,解说怎样安装这个第三方库,到眼下阶段该库的版本号已经到了1.5了,可是在github上你能够看到他的安装方法,只是为啥就没有codpod来安装呢? ...

  2. CorePlot学习六---点击scatterPlot中的symbol点时弹出对应的凝视

    因为项目须要用到用户点击 symbol时,弹出对应的具体信息,发现国内解说的比較少,经过一番搜索验证最终解决,先看效果图: 详细须要改动的代码例如以下: 首先要引用托付方法:CPTScatterPlo ...

  3. [深入浅出iOS库]之图形库CorePlot

    一,前言 Core Plot和s7Graph都是可在iOS平台下使用的开源矢量图形库,s7Graph功能相对比较简单一些,在此就不介绍了.Core Plot 功能强大很多,我们可以利用它很方便地画出复 ...

  4. 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代

    2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...

  5. Angular2学习笔记(1)

    Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...

  6. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  7. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

  8. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  9. Unity3d学习 制作地形

    这周学习了如何在unity中制作地形,就是在一个Terrain的对象上盖几座小山,在山底种几棵树,那就讲一下如何完成上述内容. 1.在新键得项目的游戏的Hierarchy目录中新键一个Terrain对 ...

随机推荐

  1. libvirt(virsh命令总结)

    virsh回车进入交互式界面: version pwd hostname 显示本节点主机名 nodeinfo  显示节点信息 list --all 显示所有云主机 7种状态: running  运行中 ...

  2. SQL基础使用

    result = executeQuery(“ SELECT FName, FSalary FROM T_Employee ”); for(i=0;i<result.count;i++) { s ...

  3. java项目打jar包的两种情况

    链接地址:http://jingyan.baidu.com/article/6b97984d8a6ddc1ca2b0bfa0.html 本文介绍一下java项目打jar包时的两种情况各怎么操作   方 ...

  4. 02-UIKit控件、MVC

    目录: 一.控件使用 二.动态类型和静态类型 三.MVC 四.UIAlertView对话框 回到顶部 一.控件使用 1 事件源,事件处理方法有一个参数传进来,那个参数就是触发这个事件的时间源. UIS ...

  5. QTabWidget 实现类似QQ聊天窗口(拖动分离出新的窗口)

    新版本的QQ聊天窗口可以实现拖动,分离出新的窗口.浏览器等软件也可以实现类似操作.所以心血来潮想用Qt实现类似的功能.想用QTabWidget直接实现是很难的,仔细阅读源码,发现QTabWidget内 ...

  6. Android Mediaplayer 调用release()的时候ANR

    先stop,然后再release,最后吧media置为null

  7. 【译】在ASP.NET中创建PDF-iTextSharp起步

    原文 [译]在ASP.NET中创建PDF-iTextSharp起步 .Net framework 中自身并不包含可以和pdf打交道的方法.所以,当你需要你的ASP.Net Web应用程序中包含创建或与 ...

  8. cocos2d-x游戏开发系列教程-坦克大战游戏之子弹的碰撞检测处理

    在上篇我们加上了简单的坦克之间的碰撞检测,这篇我们继续加上子弹之间, 子弹与坦克之间的碰撞检测,对于上一篇碰撞处理不太完美的地方我们继续改进. 1.子弹之间的碰撞 //玩家子弹和敌方子弹之间的碰撞 C ...

  9. java.lang.NoClassDefFoundError: ognl/PropertyAccessor解决的方法

    本来不想为这个专门写一篇文章的,可是发现这么简单的一个问题居然没有人好好回答过.从方便搜索的角度考虑,特意取了这么一个题目. 事实上解决方法就是将ognl的jar包增加就可以. 比方我用的是ognl3 ...

  10. Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角色路径_3

    点击下载代码   http://download.csdn.net/detail/lideguo1979/8291803 新建一个类RouteNavigation,定义getPath()方法.用来获取 ...