core plot 使用方法

來源:互聯網
上載者:User

- (void)constructScatterPlot

{

// Create graph from theme

graph = [[CPXYGraph alloc] initWithFrame:CGRectZero];

CPTheme *theme = [CPTheme themeNamed: @"Dark Gradients"];

[graph applyTheme:theme];

scatterPlotView.hostedGraph = graph;

 

graph.paddingLeft = 10.0;

graph.paddingTop = 10.0;

graph.paddingRight = 10.0;

graph.paddingBottom = 10.0;

 

// Setup plot space

CPXYPlotSpace *plotSpace = (CPXYPlotSpace *)graph.defaultPlotSpace;

plotSpace.allowsUserInteraction = YES;

//設定x y軸

plotSpace.xRange = [CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(1.0) length:CPDecimalFromFloat(2.0)];

plotSpace.yRange = [CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(1.0) length:CPDecimalFromFloat(3.0)];

 

// Axes

CPXYAxisSet *axisSet = (CPXYAxisSet *)graph.axisSet;

CPXYAxis *x = axisSet.xAxis;

x.majorIntervalLength = CPDecimalFromString(@"2");//設定座標軸的單位長度

x.orthogonalCoordinateDecimal = CPDecimalFromString(@"2");//設定座標系的交叉位置

x.minorTicksPerInterval = 2;

NSArray *exclusionRanges = [NSArray arrayWithObjects:

[CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(1.99) length:CPDecimalFromFloat(0.02)],

[CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(0.99) length:CPDecimalFromFloat(0.02)],

[CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(2.99) length:CPDecimalFromFloat(0.02)],

nil];

x.labelExclusionRanges = exclusionRanges;

 

CPXYAxis *y = axisSet.yAxis;

y.majorIntervalLength = CPDecimalFromString(@"0.5");

y.minorTicksPerInterval = 5;

y.orthogonalCoordinateDecimal = CPDecimalFromString(@"2");

exclusionRanges = [NSArray arrayWithObjects:

[CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(1.99) length:CPDecimalFromFloat(0.02)],

[CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(0.99) length:CPDecimalFromFloat(0.02)],

[CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(3.99) length:CPDecimalFromFloat(0.02)],

nil];

y.labelExclusionRanges = exclusionRanges;

 

// Create a green plot area

//建立綠色地區

CPScatterPlot *dataSourceLinePlot = [[[CPScatterPlot alloc] init] autorelease];

dataSourceLinePlot.identifier = @"Green Plot";

 

//設定綠色地區邊框的樣式

CPMutableLineStyle *lineStyle = [[dataSourceLinePlot.dataLineStyle mutableCopy] autorelease];

lineStyle.lineWidth = 3.f;

   lineStyle.lineColor = [CPColor greenColor];

lineStyle.dashPattern = [NSArray arrayWithObjects:[NSNumber numberWithFloat:5.0f], [NSNumber numberWithFloat:5.0f], nil];

dataSourceLinePlot.dataLineStyle = lineStyle;

 

//設定資料元代理

dataSourceLinePlot.dataSource = self;

 

// Put an area gradient under the plot above

CPColor *areaColor = [CPColor colorWithComponentRed:0.3 green:1.0 blue:0.3 alpha:0.8];

//設定地區的顏色,第一個為結束顏色,第二個為開始顏色

CPGradient *areaGradient = [CPGradient gradientWithBeginningColor:areaColor endingColor:[CPColor clearColor]];

areaGradient.angle = -90.0f;

CPFill *areaGradientFill = [CPFill fillWithGradient:areaGradient];

dataSourceLinePlot.areaFill = areaGradientFill;

dataSourceLinePlot.areaBaseValue = CPDecimalFromString(@"2");//填充的範圍,通常設定為y軸的最大範圍

 

// Animate in the new plot, as an example

dataSourceLinePlot.opacity = 0.0f;//設定開的透明度, 然後會有動畫

dataSourceLinePlot.cachePrecision = CPPlotCachePrecisionDecimal;

[graph addPlot:dataSourceLinePlot];//簡短添加一個預設的曲線到預設的曲線空間。

 

CABasicAnimation *fadeInAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];

fadeInAnimation.duration = 1.0f;

fadeInAnimation.removedOnCompletion = NO;

fadeInAnimation.fillMode = kCAFillModeForwards;

fadeInAnimation.toValue = [NSNumber numberWithFloat:1.0];//動畫最終結束的值

[dataSourceLinePlot addAnimation:fadeInAnimation forKey:@"animateOpacity"];

 

// Create a blue plot area

CPScatterPlot *boundLinePlot = [[[CPScatterPlot alloc] init] autorelease];

boundLinePlot.identifier = @"Blue Plot";

 

lineStyle = [[boundLinePlot.dataLineStyle mutableCopy] autorelease];

lineStyle.miterLimit = 1.0f;

lineStyle.lineWidth = 3.0f;

lineStyle.lineColor = [CPColor blueColor];

lineStyle = lineStyle;

 

boundLinePlot.dataSource = self;

boundLinePlot.cachePrecision = CPPlotCachePrecisionDouble;

boundLinePlot.interpolation = CPScatterPlotInterpolationHistogram;

[graph addPlot:boundLinePlot];

 

// Do a blue gradient

CPColor *areaColor1 = [CPColor colorWithComponentRed:0.3 green:0.3 blue:1.0 alpha:0.8];

CPGradient *areaGradient1 = [CPGradient gradientWithBeginningColor:areaColor1 endingColor:[CPColor clearColor]];

areaGradient1.angle = -90.0f;

areaGradientFill = [CPFill fillWithGradient:areaGradient1];

boundLinePlot.areaFill = areaGradientFill;

boundLinePlot.areaBaseValue = [[NSDecimalNumber zero] decimalValue];

 

// Add plot symbols 在座標處添加一個點

CPMutableLineStyle *symbolLineStyle = [CPMutableLineStyle lineStyle];

symbolLineStyle.lineColor = [CPColor blackColor];

CPPlotSymbol *plotSymbol = [CPPlotSymbol ellipsePlotSymbol];

plotSymbol.fill = [CPFill fillWithColor:[CPColor blueColor]];

plotSymbol.lineStyle = symbolLineStyle;

plotSymbol.size = CGSizeMake(10.0, 10.0);

boundLinePlot.plotSymbol = plotSymbol;

//dataSourceLinePlot.plotSymbol = plotSymbol;

 

// Add some initial data//添加座標的臨時資料

NSMutableArray *contentArray = [NSMutableArray arrayWithCapacity:100];

NSUInteger i;

for ( i = 0; i < 60; i++ ) {

id x = [NSNumber numberWithFloat:1+i*0.05];

id y = [NSNumber numberWithFloat:1.2*rand()/(float)RAND_MAX + 1.2];//2147483647

[contentArray addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:x, @"x", y, @"y", nil]];

}

self.dataForPlot = contentArray;

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.