如何使用Core Plot绘制直方图和折线图

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/27 18:36:24
如何使用Core Plot绘制直方图和折线图

如何使用Core Plot绘制直方图和折线图
如何使用Core Plot绘制直方图和折线图

如何使用Core Plot绘制直方图和折线图
下面的代码包括了折线图和直方图的实现: 1、.h文件:#import #import // 散点图的数据点数: 20#define num 20@interface BarChartViewController : UIViewController {@privateCPXYGraph * graph ;double x [ num ] ; // 散点的 x 坐标 double y1 [ num ] ; // 第 1 个散点图的 y 坐标double y2 [ num ]; // 第 2 个散点图的 y 坐标} @end2、.m文件:#import "BarChartViewController.h"@implementation BarChartViewController-( BOOL )shouldAutorotateToInterfaceOrientation:( UIInterfaceOrientation )toInterfaceOrientation{return YES ;}#pragma mark -#pragma mark Initialization and teardown -( void )viewDidAppear:( BOOL )animated{ // 为 CPGraph 指定主题 graph = [[ CPXYGraph alloc ] initWithFrame : CGRectZero ];CPTheme *theme = [ CPTheme themeNamed : kCPDarkGradientTheme ]; [ graph applyTheme :theme];// 把 self.view 由 UIView 转变为 CPGraphHostingView ,因为 UIView 无法加载 CPGraphself . view =[[ CPGraphHostingView alloc ] initWithFrame :[ UIScreen mainScreen ]. bounds ];CPGraphHostingView *hostingView = ( CPGraphHostingView *) self . view ;[hostingView setHostedGraph : graph ];// CPGraph 边框:无graph . plotAreaFrame . borderLineStyle = nil ; graph . plotAreaFrame . cornerRadius = 0.0f ; // 绘图空间 plot space CPXYPlotSpace *plotSpace = ( CPXYPlotSpace *) graph . defaultPlotSpace ;// 绘图空间大小: Y : 0-300 , x : 0-16 plotSpace. yRange = [ CPPlotRange plotRangeWithLocation : CPDecimalFromFloat ( 0.0f ) length :CPDecimalFromFloat ( 200.0f )]; plotSpace. xRange = [ CPPlotRange plotRangeWithLocation : CPDecimalFromFloat ( 0.0f ) length :CPDecimalFromInt ( num )];// CPGraph 四边不留白 graph . paddingLeft = 0.0f ; graph . paddingRight = 0.0f ; graph . paddingTop = 0.0f ; graph . paddingBottom = 0.0f ;// 绘图区 4 边留白 graph . plotAreaFrame . paddingLeft = 45.0 ;graph . plotAreaFrame . paddingTop = 40.0 ;graph . plotAreaFrame . paddingRight = 5.0 ;graph . plotAreaFrame . paddingBottom = 80.0 ; // 坐标系CPXYAxisSet *axisSet = ( CPXYAxisSet *) graph . axisSet ;//x 轴:为坐标系的 x 轴 CPXYAxis *X = axisSet. xAxis ;// 清除默认的轴标签 , 使用自定义的轴标签X. labelingPolicy = CPAxisLabelingPolicyNone ; // 构造 MutableArray ,用于存放自定义的轴标签NSMutableArray *customLabels = [ NSMutableArray arrayWithCapacity : num ];// 构造一个 TextStylestatic CPTextStyle * labelTextStyle= nil ;labelTextStyle=[[ CPTextStyle alloc ] init ];labelTextStyle. color =[ CPColor whiteColor ];labelTextStyle. fontSize = 10.0f ;// 每个数据点一个轴标签for ( int i= 0 ;i< num ;i++) {CPAxisLabel *newLabel = [[ CPAxisLabel alloc ] initWithText : [ NSString stringWithFormat : @" 第 %d 个数据点 " ,(i+ 1 )] textStyle :labelTextStyle];newLabel. tickLocation = CPDecimalFromInt (i);newLabel. offset = X. labelOffset + X. majorTickLength ;newLabel. rotation = M_PI / 2 ;[customLabels addObject :newLabel];[newLabel release ];}X. axisLabels = [ NSSet setWithArray :customLabels];//y 轴CPXYAxis *y = axisSet. yAxis ;//y 轴:不显示小刻度线 y. minorTickLineStyle = nil ;// 大刻度线间距: 50 单位 y. majorIntervalLength = CPDecimalFromString ( @"50" );// 坐标原点: 0 y. orthogonalCoordinateDecimal = CPDecimalFromString ( @"0" );y. titleOffset = 45.0f ; y. titleLocation = CPDecimalFromFloat ( 150.0f );// 第 1 个散点图:蓝色CPScatterPlot *boundLinePlot = [[[ CPScatterPlot alloc ] init ] autorelease ];//id ,用于识别该散点图 boundLinePlot. identifier = @"Blue Plot" ; // 线型设置 CPLineStyle * lineStyle = [[[ CPLineStyle alloc ] init ] autorelease ];lineStyle. lineWidth = 1.0f ;lineStyle. lineColor = [ CPColor blueColor ]; boundLinePlot. dataLineStyle = lineStyle; // 设置数据源 , 必须实现 CPPlotDataSource 协议 boundLinePlot. dataSource = self ;[ graph addPlot :boundLinePlot];// 在图形上添加一些小圆点符号(节点)CPLineStyle *symbolLineStyle = [[ CPLineStyle alloc ] init ];// 描边:黑色symbolLineStyle. lineColor = [ CPColor blackColor ];// 符号类型:椭圆CPPlotSymbol *plotSymbol = [ CPPlotSymbol ellipsePlotSymbol ];// 填充色:蓝色plotSymbol. fill = [ CPFill fillWithColor :[ CPColor blueColor ]];// 描边plotSymbol. lineStyle = symbolLineStyle;// 符号大小