2

まず、グラフ(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を変更していました。

場所と長さを取得する2つのテキストフィールドを取得しました。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の長さを低い方から高い方に変更した場合(たとえば、長さ3.0から5.0に変更した場合)、グラフの範囲は拡大しません。

範囲を設定した後、NSLogを使用してglobalXRangeの長さが変更されているかどうかを確認しました。驚いたことに、NSLogに従って長さが変更されましたが、視覚的にはグラフが移動したり、範囲が変更されたりしていません。

私は解決策を見つけることができません。これで私を助けてください。前もって感謝します。

4

1 に答える 1

5

およびは、組み込みのユーザー操作機能を使用して、プロットスペースがスクロールおよびズームできる量を制限しますglobalXRange。およびをglobalYRange使用して、プロットの表示部分を制御します。xRangeyRange

于 2012-06-05T01:07:44.413 に答える