Iphone Core plot majorIntervalLength:无法使其工作

Iphone Core plot majorIntervalLength:无法使其工作,iphone,ios,objective-c,core-plot,Iphone,Ios,Objective C,Core Plot,我想画一个简单的图形,但不可能这么难!我以前成功使用过core plot!。我有一些日期要画在x轴上。y轴上的一些小浮点值,如0.139503、0.139481等。我必须绘制5个这样的值,从后端获取。 对于y轴范围,我找到这些值中的最低值,并将其设置为y轴范围的起点。am将MAJURENTERVALENGTH设置为HIGHEST VALUE-LOWEST VALUE/5,例如0.007946。但y轴间隔似乎固定在间隔1。因此,由于y轴值非常小,它们之间的差值在0.01左右,所以所有绘图都是在y=

我想画一个简单的图形,但不可能这么难!我以前成功使用过core plot!。我有一些日期要画在x轴上。y轴上的一些小浮点值,如0.139503、0.139481等。我必须绘制5个这样的值,从后端获取。 对于y轴范围,我找到这些值中的最低值,并将其设置为y轴范围的起点。am将MAJURENTERVALENGTH设置为HIGHEST VALUE-LOWEST VALUE/5,例如0.007946。但y轴间隔似乎固定在间隔1。因此,由于y轴值非常小,它们之间的差值在0.01左右,所以所有绘图都是在y=0.0处绘制的。下面是代码片段:

-(void) initializeGraph {


    if ((self.graph == nil) || (self.graph == NULL)) {

        self.graphHostView = [(CPTGraphHostingView *) [CPTGraphHostingView alloc] initWithFrame:self.view.bounds];

        self.graph = [[CPTXYGraph alloc] initWithFrame:self.graphHostView.bounds];
    graph.paddingLeft   = 2.0;
    graph.paddingRight  = 2.0;
    graph.paddingTop    = 2.0;
    graph.paddingBottom = 2.0;
    graph.title = @"Graph Plot";

    // plotting style is set to line plots
    CPTMutableLineStyle *lineStyle = [CPTMutableLineStyle lineStyle];
    lineStyle.lineColor = [CPTColor blackColor];
    lineStyle.lineWidth = 2.0f;

    CPTXYAxisSet *axisSet = (CPTXYAxisSet *) self.graph.axisSet;
    axisSet.xAxis.majorTickLineStyle = lineStyle;
    axisSet.xAxis.majorTickLength = 7.0f;
    axisSet.xAxis.labelingPolicy = CPTAxisLabelingPolicyEqualDivisions;
    axisSet.yAxis.labelingPolicy = CPTAxisLabelingPolicyEqualDivisions;
    axisSet.xAxis.labelRotation = 90.0;
    CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *) self.graph.defaultPlotSpace;
    // Determine the lowest and highest values to be plotted in Y Axis)
    CGFloat yLow = 0.1;
    CGFloat yHigh = yLow;
    for (int i=0 ; i<self.dict.count ; i++) {
        MyCustomObject *myData = (MyCustomObject *) [dict objectForKey:
                                                           [self.arrayKeys objectAtIndex:i]];

        if (myData.mem < yLow) {
            yLow = myData.mem;
        }
        if (yHigh < myData.mem) {
            yHigh = myData.mem;
        }
    }
    plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0)
                                                  length:CPTDecimalFromFloat(5)];
    plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(yLow)
                                                    length:CPTDecimalFromFloat(5)];

    // To determine the point where your graph starts
    //axisSet.yAxis.orthogonalCoordinateDecimal = CPTDecimalFromFloat(yLow);
    axisSet.yAxis.majorIntervalLength = CPTDecimalFromCGFloat((yHigh-yLow)/5.0);
    NSLog(@"Y axis interval : %f", (yHigh-yLow)/5.0);
    ...
}

-(NSNumber *) numberForPlot:(CPTPlot *)plot
                  field:(NSUInteger)fieldEnum
            recordIndex:(NSUInteger)index {
    if ( fieldEnum == CPTScatterPlotFieldY ) {
        return [NSNumber numberWithFloat:myData.mem];
    } else {
        return [NSNumber numberWithInt:index];
    }
}

为什么y轴的主间隔长度设置不起作用

是否在任何位置设置axisSet.yAxis.majorTickLength?我在上面的代码中没有看到它


如果majorTickLength为零,则勾号将不会显示任何内容。

按照Erik Skroch向yHigh yLow建议的设置yRange的长度有助于

尝试,Andrew,但徒劳。仍然只有一条直线。这次我的y轴样本值是0.202995,0.202972,0.203030,0.203053,0.203205,我已经将yAxis.majorIntervalLength设置为0.020000,yAxis.majorTickLength=5.0f。它实际上应该绘制y轴值的细微变化,但它似乎将所有y轴值都绘制为一条直线,因为图表显示的是0,1,2,3,4的间隔,而不是0.02的间隔长度。我想我误解了你的问题,听起来好像勾号标签出现了。但是你的y范围太大了。如果您的值都在.2到.3之间,请尝试将y轴范围的长度设置为.1。很明显,你想计算它,但只是硬编码它应该验证这是否是正确的problem@andrewlattis在绘图范围上是正确的。尝试将Y范围的长度设置为Y高-Y低。谢谢,andrewlattis,Eric Skroch。尤里卡!明白了!:松了一口气!