Базовый график: проблема с добавлением точек данных в линейный график - PullRequest
0 голосов
/ 15 сентября 2011

В настоящее время я использую следующий код из примера кода рассеянного графика:

// Axes
CPTXYAxisSet *xyAxisSet = (id)graph.axisSet;
CPTXYAxis *xAxis = xyAxisSet.xAxis;
CPTMutableLineStyle *lineStyle = [xAxis.axisLineStyle mutableCopy];
lineStyle.lineCap = kCGLineCapButt;

Моя проблема в том, что график чем-то напоминает гистограмму. Значения X и Y на осях обе идут только от 0 до 1. Как заставить обе оси показывать значения от [-5,5]?

1 Ответ

1 голос
/ 15 сентября 2011

Вам необходимо установить 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 :.Второй аргумент будет 0, когда он хочет значение оси x для точки, и будет 1, когда он хочет значение оси Y для точки.Индекс - это номер точки для вашего графика.Таким образом, предполагая, что у вас есть данные в NSArray с именем myDataArray, где каждый объект в этом массиве является другим NSArray со значениями x, y, у вас будет что-то вроде:

-(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];
...