CorePlot学习

阅读这篇文章,指出它在国外    原文地址: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 动画

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

时间: 2024-10-10 08:43:23

CorePlot学习的相关文章

CorePlot学习零---安装

刚開始接触CorePlot时,网上搜到非常多相关文章,解说怎样安装这个第三方库,到眼下阶段该库的版本号已经到了1.5了,可是在github上你能够看到他的安装方法,只是为啥就没有codpod来安装呢?于是我就先搜索:pod search coreplot 结果例如以下:令人惊喜啊 说明我们是能够用pod来安装的,省去了非常多麻烦的设置,直接拿来就能用 多好啊 所以我们在Podfile文件里:这样写 pod 'CorePlot' ~>1.5.1 然后 pod update就可以,或者pod ins

CorePlot学习七---坐标轴的详细分析

先看代码,有标注,很详细,看看是如何设定x.y轴的可视范围.移动范围.已经如何确定原点的位置的.还有就是如何固定坐标轴!!! //坐标轴的初始化 -(void)axesInit { // Setup plot space: 设置一屏内可显示的x,y量度范围 CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)[xyGraph defaultPlotSpace]; plotSpace.delegate = self; plotSpace.allowsUser

CorePlot学习六---点击scatterPlot中的symbol点时弹出相应的注释

由于项目需要用到用户点击 symbol时,弹出相应的详细信息,发现国内讲解的比较少,经过一番搜索验证终于解决,先看效果图: 具体需要修改的代码如下: 首先要引用委托方法:CPTScatterPlotDelegate.CPTPlotSpaceDelegate 完成如下: #pragma mark - #pragma mark CPTPlotSpaceDelegate methods -(BOOL)plotSpace:(CPTPlotSpace *)space shouldHandlePointin

Core-Plot学习一 基本对象、添加库

首先看一下整体的绘图区域划分: CPTGraph是Core Plot的核心类,在coreplot中graph就是整个图表,包括:坐标轴,标签,标题,以及多个图表元素. Plot Area : 图表显示的区域,该区域被坐标轴限制在一定方位内,可以显示栅格在该区域,每个图表视图只能有一个图标区域, Plot Spaces : 我这里想称Plot space为图表元素原型,比如说柱状图,他有更多个柱元素组成,其中的一个就是元素原型.这时个人理解 而Plot Spaces就是元素原型和坐标系的映射关系集

[转载]core-Plot学习二 自定义CorePlot label及majorGridLine莫名其妙消失的Bug

设置corePlot可拖动: plotSpace.allowsUserInteraction = YES; 设置x显示的范围: plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(8 * oneDay)length:CPTDecimalFromInt(23 * oneDay)]; 设置x轴拖动范围: plotSpace.globalXRange = [CPTPlotRange plotRangeWith

CorePlot学习 使用技巧

corePlot 使用技巧: //设置内边距: graph.plotAreaFrame.paddingLeft +=5; graph.plotAreaFrame.paddingTop +=5; graph.plotAreaFrame.paddingRight +=5; graph.plotAreaFrame.paddingBottom +=17.5; [self setAllowPinchScaling:NO];//禁止缩放 //设置坐标只能按照X轴横向滑动:(其他方向请自行理解) plotSp

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

因为项目须要用到用户点击 symbol时,弹出对应的具体信息,发现国内解说的比較少,经过一番搜索验证最终解决,先看效果图: 详细须要改动的代码例如以下: 首先要引用托付方法:CPTScatterPlotDelegate.CPTPlotSpaceDelegate 完毕例如以下: #pragma mark - #pragma mark CPTPlotSpaceDelegate methods -(BOOL)plotSpace:(CPTPlotSpace *)space shouldHandlePoi

CorePlot学习 点击scatterPlot中的symbol点时弹出相应的注释

首先要引用委托方法:CPTScatterPlotDelegate.CPTPlotSpaceDelegate 完成如下: #pragma mark - #pragma mark CPTPlotSpaceDelegate methods -(BOOL)plotSpace:(CPTPlotSpace *)space shouldHandlePointingDeviceCancelledEvent:(UIEvent *)event { return YES; } -(BOOL)plotSpace:(CP

CorePlot学习 坐标轴的详细分析

//坐标轴的初始化 -(void)axesInit { // Setup plot space: 设置一屏内可显示的x,y量度范围 CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)[xyGraph defaultPlotSpace]; plotSpace.delegate = self; plotSpace.allowsUserInteraction = YES;//允许拖动 //设置移动时的停止动画 这些参数保持默认即可 变化不大 plotSpace