Coreplot:设置全局范围的长度不起作用

时间:2012-06-04 14:10:20

标签: ios core-plot

首先,我有一个图表(Coreplot Linechart)。我已经设置了图的defaultPlotspace的x范围和y范围。

- (void) setUpXRangeForPlotspace:(CPTXYPlotSpace *) plotSpace {

int rangeLength = [self xRangeLength];
plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(- 0.5f)    length:CPTDecimalFromFloat(rangeLength + 1.0)];

}

- (void) setUpYRangeForPlotspace:(CPTXYPlotSpace *) plotSpace {

    float maxValue = [self maximumYValue];

    // length = maxvalue + (10% of maxvalue);
    plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f)     length:CPTDecimalFromFloat(maxValue + (maxValue/10.0))];
}

现在我的任务是根据用户交互显示沿x轴的图形的一部分(区域)。为此,我正在更改plotspace的globalXRange。

我从两个文本区域获取了位置和长度。按下按钮时会触发 btnAction:方法。

- (void) btnAction:(id) sender {

    float txt1fl = [txt1.text floatValue];
    float txt2fl = [txt2.text floatValue];


    NSLog(@"txt1fl : %f, txt2fl : %f",txt1fl,txt2fl);

    CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace;

    [plotSpace setGlobalXRange:[CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(txt1fl)  length:(CPTDecimalFromFloat(txt2fl))]];
    [plotSpace setGlobalYRange:plotSpace.globalYRange];

    NSLog(@"Graph Global x:%f   length:%f",CPTDecimalFloatValue(plotSpace.globalXRange.location),CPTDecimalFloatValue(plotSpace.globalXRange.length));

}

当我更改范围的位置并保持长度时,图表会显示相应的区域。也就是说,它滚动到数字提到的位置。

即使我将globalXRange的长度更高更改为更低值 - 例如,从5.0更改长度到3.0 - 图表显示了适当的部分。也就是说,它在更大的图片中显示了一个更小的区域。

但是当我将globalXRange的长度从 lower 更改为更高时 - 例如,将长度3.0更改为5.0 - 图表的范围不会增加。

设置我使用NSLog检查的范围后,如果globalXRange的长度发生了变化。令人惊讶的是,根据NSLog,长度已经改变,但在视觉上图表没有移动也没有改变其范围。

我无法解决问题。请帮我解决一下这个。提前谢谢。

1 个答案:

答案 0 :(得分:5)

globalXRangeglobalYRange使用内置的用户互动功能限制绘图空间可以滚动和缩放的数量。使用xRangeyRange来控制图表的可见部分。