目前我正在使用散点图示例代码中的以下代码:
// Axes
CPTXYAxisSet *xyAxisSet = (id)graph.axisSet;
CPTXYAxis *xAxis = xyAxisSet.xAxis;
CPTMutableLineStyle *lineStyle = [xAxis.axisLineStyle mutableCopy];
lineStyle.lineCap = kCGLineCapButt;
我的问题是,图表有点类似于条形图。轴上的X和Y值都只从0到1.如何使两个轴显示[-5,5]中的值?
答案 0 :(得分:1)
您需要为图表空间设置xRange和yRange,以设置图表将显示的值范围。类似的东西:
plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace;
plotSpace.xRange = [CPTPlotRange plotRangeWithLocation: CPTDecimalFromDouble(-5.0) length: CPTDecimalFromDouble(10.0)];
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation: CPTDecimalFromDouble(-5.0) length: CPTDecimalFromDouble(10.0)];
要获得显示的实际点,您需要设置图形的dataSource对象,并且需要响应数据源方法:
-(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot;
-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index;
如果您只有一个图,则可以忽略numberForPlot的第一个参数:。当它想要点的x轴值时,第二个参数将为0,当它想要点的Y轴值时,它将为1。索引是您的绘图的点编号。因此,假设您有一个名为myDataArray的NSArray中的数据,其中该数组中的每个对象都是x,y值的另一个NSArray,您将拥有类似的内容:
-(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot;
{
return [myDataArray count];
}
-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index;
{
return [[myDataArray objectAtIndex: index] objectAtIndex: fieldEnum];
}
您可以使用以下固定数据设置数据数组:
NSArray *myDataArray = [NSArray arrayWithObjects:
[NSArray arrayWithObjects: [NSNumber numberWithInt: 2], [NSNumber numberWithInt: 3], nil],
[NSArray arrayWithObjects: [NSNumber numberWithInt: 3], [NSNumber numberWithInt: 2], nil],
[NSArray arrayWithObjects: [NSNumber numberWithInt: 5], [NSNumber numberWithInt: 5], nil],
nil];