日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

iOS中使用Core Plot绘制统计图入门

發(fā)布時(shí)間:2023/12/29 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS中使用Core Plot绘制统计图入门 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.



iOS(iPhone/iPad) 下圖形組件有兩個(gè)有名的,s7graphview?和?Core Plot,它們都是在?Google?上托管的代碼,聽(tīng)說(shuō) Core Plot 比較強(qiáng),因?yàn)榍罢邇H支持曲線圖,后者呢曲線圖、餅圖、柱狀圖等通吃,且較活躍。那就專注下 Core Plot 的使用。它提供了 Mac?OS?X 和 iOS 下的組件庫(kù),我只用到它的 iOS 圖表庫(kù)。

Core Plot?能畫(huà)出來(lái)圖表的效果應(yīng)該多看看:http://code.google.com/p/core-plot/wiki/PlotExamples,相信看過(guò)之后絕大多數(shù)的 iOS?下的圖表可以用它來(lái)滿足你了。

配置其實(shí)很簡(jiǎn)單的,先從 http://code.google.com/p/core-plot/downloads/list?下載最新版的?Core?Plot,比如當(dāng)前是:CorePlot_0.4.zip,解壓開(kāi),然后就兩步:

1.?把目錄 CorePlot_0.4/Binaries/iOS?中的?libCorePlotCocoaTouch.a?和整個(gè)子目錄?CorePlotHeaders?從?Finder?中一并拖入到當(dāng)前項(xiàng)目中,選擇?Copy?item into destination group's folder (if needed),Add to targets?里選上相應(yīng)的?target。此時(shí)你可以在項(xiàng)目的?target?中?Build Phases?頁(yè)里 Link Binary With Libraries?中看到有了?libCorePlot-CocoaTouch.a.

2.?再到相應(yīng)?Target?的 Build Settings?頁(yè)里,Other Linker Flags?項(xiàng)中加上 -ObjC -all_load

[注]我所用的?Xcode?是 4.1?版本的。Xcode 3?的?Target?設(shè)置項(xiàng)位置稍有不同。

配置就這么完成了,使用時(shí)只需要 #import "CorePlot-CocoaTouch.h",下面來(lái)體驗(yàn)一個(gè)最簡(jiǎn)單的例子,下載的?CorePlot?包中雖然有一些例子,但還是需要一個(gè)能讓人好理解并獲得最快速體驗(yàn)的。比如像這下圖中這么一個(gè)最簡(jiǎn)單的曲線圖,最基本的代碼要素應(yīng)該有哪些呢?


主要代碼就是下面那樣:
// //? Created by Unmi Qiu on 8/11/11. //? Copyright 2011 . All rights reserved. // #import <UIKit/UIKit.h> #import "CorePlot-CocoaTouch.h" @interfaceTestCorePlotViewController : UIViewController<CPTPlotDataSource> { ????NSMutableArray*dataArray; } @end @implementationTestCorePlotViewController #pragma mark - View lifecycle - (void) viewDidAppear:(BOOL)animated { ????? ????//初始化數(shù)組,并放入十個(gè) 0 - 20 間的隨機(jī)數(shù) ????dataArray = [[NSMutableArrayalloc] init]; ????for(inti=0; i< 10; i++){ ????????[dataArray addObject:[NSNumbernumberWithInt:rand()%20]]; ????} ????CGRect frame = CGRectMake(10,10, 300,100); ????? ????//圖形要放在一個(gè) CPTGraphHostingView 中,CPTGraphHostingView 繼承自 UIView ????CPTGraphHostingView *hostView = [[CPTGraphHostingView alloc] initWithFrame:frame]; ????? ????//把 CPTGraphHostingView 加到你自己的 View 中 ????[self.view addSubview:hostView]; ????hostView.backgroundColor = [UIColorblueColor]; ????? ????//在 CPTGraph 中畫(huà)圖,這里的 CPTXYGraph 是個(gè)曲線圖 ????//要指定 CPTGraphHostingView 的 hostedGraph 屬性來(lái)關(guān)聯(lián) ????CPTXYGraph *graph = [[CPTXYGraph alloc] initWithFrame:hostView.frame]; ????hostView.hostedGraph = graph; ????? ????CPTScatterPlot *scatterPlot = [[CPTScatterPlot alloc] initWithFrame:graph.bounds]; ????[graph addPlot:scatterPlot]; ????scatterPlot.dataSource = self;//設(shè)定數(shù)據(jù)源,需應(yīng)用 CPTPlotDataSource 協(xié)議 ????? ????//設(shè)置 PlotSpace,這里的 xRange 和 yRange 要理解好,它決定了點(diǎn)是否落在圖形的可見(jiàn)區(qū)域 ????//location 值表示坐標(biāo)起始值,一般可以設(shè)置元素中的最小值 ????//length 值表示從起始值上浮多少,一般可以用最大值減去最小值的結(jié)果 ????//其實(shí)我倒覺(jué)得,CPTPlotRange:(NSRange) range 好理解些,可以表示值從 0 到 20 ????CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *) scatterPlot.plotSpace; ????plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0) ????????????????????????????????????????????????????length:CPTDecimalFromFloat([dataArray count]-1)]; ????plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0) ????????????????????????????????????????????????????length:CPTDecimalFromFloat(20)]; ????? ????//下面省去了坐標(biāo)與線型及其他圖形風(fēng)格的代碼 ????? ????[plotSpace release]; ????[graph release]; ????[hostView release]; } //詢問(wèn)有多少個(gè)數(shù)據(jù),在 CPTPlotDataSource 中聲明的 - (NSUInteger) numberOfRecordsForPlot:(CPTPlot *)plot { ????return[dataArray count]; } //詢問(wèn)一個(gè)個(gè)數(shù)據(jù)值,在 CPTPlotDataSource 中聲明的 - (NSNumber*) numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index { ????if(fieldEnum == CPTScatterPlotFieldY){??? //詢問(wèn) Y 值時(shí) ????????return[dataArray objectAtIndex:index]; ????}else{???????????????????????????????????//詢問(wèn) X 值時(shí) ????????return[NSNumbernumberWithInt:index]; ????} } - (void) dealloc { ????[dataArray release]; ????[superdealloc]; } @end

原文地址:http://unmi.cc/ios-coreplot-chart-started








總結(jié)

以上是生活随笔為你收集整理的iOS中使用Core Plot绘制统计图入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。