How To Draw Graphs with Core Plot, Part 1
一個統計圖的Open Source Core-plot,
http://code.google.com/p/core-plot/
提供了折線圖、pie chart和bar chart等等...
如何使用這個open source
首先先把core-plot download下來:
1. 把Binaries >IOS內的 CorePlotHeaders 資料夾和libCorePlot-CocoaTouch.a拉近Project內,
2. 把內建的QuartzCore.framework加入project
3. 在Project Bulild Settings裡面,Other Linker Flags內加入"-ObjC",如果是非Xcode4.2的版本則要加入"-all_load"
若無執行步驟3 會出現以下錯誤訊息
PS.教學範例範例中,若想報表可以重復變化 要將填入data時的static拿掉
//static
NSArray *prices = nil;
How To Draw Graphs with Core Plot, Part 2
拉UIView建關係時 custom class記得改成克制的name (預設UIView)
.m IBOutlet CPTGraphHostingView *hostView; 的hostView才會跑出來
-(void)configureChart {
// 1 - Get reference to graph
CPTGraph *graph = self.hostView.hostedGraph;
// 2 - Create chart
CPTPieChart *pieChart = [[CPTPieChart alloc] init];
pieChart.dataSource = self;
pieChart.delegate = self;
pieChart.pieRadius = (self.hostView.bounds.size.height * 0.85) / 2; //0.7
pieChart.identifier = graph.title;
pieChart.startAngle = M_PI_4;
pieChart.sliceDirection = CPTPieDirectionClockwise;
pieChart.labelOffset = -150; //<-- Display label on pie chart
...
}
在Bar上add images
Place an image behind my labels and in front of my plot
-(void)barPlot:(CPTBarPlot *)plot :(NSUInteger)index
{
// 3 - Create annotation, if necessary
if (!self.priceAnnotation) {
NSNumber *x = [NSNumber numberWithInt:0];
NSNumber *y = [NSNumber numberWithInt:0];
NSArray *anchorPoint = [NSArray arrayWithObjects:x, y, nil];
self.priceAnnotation = [[CPTPlotSpaceAnnotation alloc] initWithPlotSpace:plot.plotSpace anchorPlotPoint:anchorPoint];
NSLog(@"self.priceAnnotation =%@",self.priceAnnotation);
}
//add
CGRect imageRect = CGRectMake(0.0, 0.0, 130, 77);
CPTLayer *imagebgLayer = [[CPTLayer alloc] initWithFrame:imageRect];
imagebgLayer.backgroundColor = [UIColor clearColor].CGColor;
self.priceAnnotation.contentLayer =imagebgLayer;
CPTAnnotationHostLayer *newHostLayer = [[CPTAnnotationHostLayer alloc]
initWithFrame:CGRectMake(0, 0, 129, 70)];
UIImage * annotationBG = [UIImage imageNamed:@"content_pass.png"];
newHostLayer.backgroundColor = [UIColor colorWithPatternImage:annotationBG].CGColor;
[imagebgLayer addSublayer: newHostLayer];
// 6 - Get plot index based on identifier
NSInteger plotIndex = 1;
// 7 - Get the anchor point for annotation
int indexi=1;
CGFloat x = indexi -0.06f + CPDBarInitialX + (plotIndex * CPDBarWidth) ;
NSNumber *anchorX = [NSNumber numberWithFloat:x];
CGFloat y = 5.0f;
NSNumber *anchorY = [NSNumber numberWithFloat:y];
self.priceAnnotation.anchorPlotPoint = [NSArray arrayWithObjects:anchorX, anchorY, nil];
// 8 - Add the annotation
[plot.graph.plotAreaFrame.plotArea addAnnotation:self.priceAnnotation];
[viewHistoryScroll addSubview:self.hostView ];
[self.view addSubview:viewHistoryScroll];
}





沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。