Исправление осей в CorePlot - iOS - PullRequest
1 голос
/ 05 января 2012

Я пытаюсь понять, как использовать CorePlot.Ранее я использовал диаграммы Google для построения графика.

Я пытаюсь установить ось своего графика в нижнем левом углу и начать 0 снизу для оси x и y.Однако я не могу понять, как работает код.

Вот код -

// Setup plot space
CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace;
plotSpace.allowsUserInteraction = YES;
plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(1.0) length:CPTDecimalFromFloat(2.0)];
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(1.0) length:CPTDecimalFromFloat(3.0)];

// Axes
CPTXYAxisSet *axisSet = (CPTXYAxisSet *)graph.axisSet;
CPTXYAxis *x = axisSet.xAxis;
x.majorIntervalLength = CPTDecimalFromString(@"0.5");
x.orthogonalCoordinateDecimal = CPTDecimalFromString(@"2");
x.minorTicksPerInterval = 2;
NSArray *exclusionRanges = [NSArray arrayWithObjects:
    [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(1.99) length:CPTDecimalFromFloat(0.02)], 
    [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.99) length:CPTDecimalFromFloat(0.02)],
    [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(2.99) length:CPTDecimalFromFloat(0.02)],
    nil];
x.labelExclusionRanges = exclusionRanges;

CPTXYAxis *y = axisSet.yAxis;
y.majorIntervalLength = CPTDecimalFromString(@"0.5");
y.minorTicksPerInterval = 5;
y.orthogonalCoordinateDecimal = CPTDecimalFromString(@"2");
exclusionRanges = [NSArray arrayWithObjects:
    [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(1.99) length:CPTDecimalFromFloat(0.02)], 
    [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.99) length:CPTDecimalFromFloat(0.02)],
    [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(3.99) length:CPTDecimalFromFloat(0.02)],
    nil];
y.labelExclusionRanges = exclusionRanges;

Может ли кто-нибудь сказать мне, что я должен делать?

Ответы [ 2 ]

3 голосов
/ 05 января 2012

Чтобы начать график с (0, 0), вам нужно изменить диапазоны x и y и точки пересечения. Вы можете изменить это, изменив

plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(1.0) length:CPTDecimalFromFloat(2.0)];

до

plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0) length:CPTDecimalFromFloat(2.0)];

, а также измените plotRangeWithLocation на 0 для yRange.

Кроме того, вам нужно изменить это

x.orthogonalCoordinateDecimal = CPTDecimalFromString(@"2");

до

x.orthogonalCoordinateDecimal = CPTDecimalFromString(@"0");

и сделать то же самое для orthogonalCoordinateDecimal для y.

1 голос
/ 16 июня 2012
NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setGeneratesDecimalNumbers:NO];

axisSet = (CPTXYAxisSet *)graph.axisSet;

x_axis = axisSet.xAxis;
x_axis.majorIntervalLength = CPTDecimalFromString(@"1");
x_axis.orthogonalCoordinateDecimal = CPTDecimalFromString(@"0");
x_axis.minorTicksPerInterval = 0;
x_axis.labelFormatter = numberFormatter;

 axisSet.xAxis.visibleRange =[CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(0) length:CPTDecimalFromInt(100)]; // you can set your number instead of 100
 axisSet.xAxis.gridLinesRange = axisSet.xAxis.visibleRange;

y_axis = axisSet.yAxis;
y_axis.majorIntervalLength = CPTDecimalFromString(@"1");
y_axis.orthogonalCoordinateDecimal = CPTDecimalFromString(@"0");
y_axis.minorTicksPerInterval = 1;
y_axis.labelFormatter = numberFormatter;

axisSet.yAxis.visibleRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(0) length:CPTDecimalFromInt(100)]; // you can set your number instead of 100
axisSet.yAxis.gridLinesRange = axisSet.yAxis.visibleRange;
...