0

ビューに収まるすべてのプロット ポイントを含むグラフを取得できません。

ここに画像の説明を入力 上記のスクリーン ショットに表示されている座標は次のとおりですx=1, y=10 and x=2, y=0

これは私のUIViewController( GraphingViewController) のスクリーンショットです。ここには、グラフのホスト ビューである別のビューがネストされています。グラフのコードは、カスタマイズしたデータ生成メソッドを除いて、SimpleScatterPlot.mとまったく同じです。

-(void)generateData
{
    NSMutableArray *contentArray = [NSMutableArray array];
    int counter = 0;
    for (NSNumber * entryValue in self.plotDataArray) {
        counter++;
        id x = [NSDecimalNumber numberWithInt:counter];
        id y = [NSDecimalNumber numberWithInt:[entryValue intValue]];
        [contentArray addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:x, @"x", y, @"y", nil]];
        NSLog(@"setting values for graph x: %@ and y: %@",x,y);
    }
    plotData = [contentArray retain];
}

もう 1 つ奇妙な点は、左右にスクロールできますが、上下にスクロールできないことです。私は以前の変更でx、yの開始点を持っていました0,0が、それはx軸を隠しています。

でグラフを開始し、0,0すべてのポイントだけでなくラベル (" X Axis"、" Y Axis") も表示されるようにスケーリングするにはどうすればよいですか? また、ご覧のとおり、Y 軸が通り.2、X が.5通ります。1私の数字はすべて整数になるので、これらはそうあるべきです。

4

4 に答える 4

1

軸ラベルを表示し続ける簡単な方法titleLocation. のデフォルト値はNAN、ラベルをプロット エリアの中央に配置します。

は、globalYRange垂直スクロールを妨げています。のデフォルト値はnilスクロールを制限しません。スクロールを制限したいが、プロット範囲を変更して新しいデータを表示する必要がある場合は、グローバル範囲を に設定しnil、プロット範囲を更新して、グローバル範囲をリセットします。

目盛りの位置と軸ラベルは、軸のラベル付けポリシーによって制御されます。デフォルトの固定間隔ポリシーが機能majorIntervalLengthします。デフォルト値の 1 のままにしておきます。

于 2013-02-20T23:54:57.870 に答える
1

私がそれを実装した方法は同じです。データから X 値と Y 値の最小値と最大値を追跡し、それに応じてプロット範囲を設定します。

// Adjust the plot space according to the min and max x/y values
plotSpace.xRange = [[CPTPlotRange alloc] initWithLocation:CPTDecimalFromInt([self.minTime intValue]) length:CPTDecimalFromInt ([self.maxTime intValue] - [self.minTime intValue])];
plotSpace.yRange = [[CPTPlotRange alloc] initWithLocation:CPTDecimalFromInt([self.minScore intValue]) length:CPTDecimalFromInt (([self.maxScore intValue] - [self.minScore intValue]))];
于 2013-02-19T21:43:49.637 に答える
0

ハイポイントが表示されないという問題の一部を修正しました。このコード行は最大を制限していましたY Axis

CPTPlotRange *globalYRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f)
                                                          length:CPTDecimalFromFloat(2.0f)];

そこで、最大値を追跡するプロパティを作成し、これをそれに設定しました。

CPTPlotRange *globalYRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f)
                                                          length:CPTDecimalFromFloat(self.largestYvalue)];

だから今私はこれを持っています:

ここに画像の説明を入力

私はまだラベルを表示する方法を理解する必要がありますX Axis(私がそれを理解するか、それに対する回答をまだ受け入れている場合は更新します)。

于 2013-02-19T19:12:07.873 に答える
0

scaleToFitPlots メソッドを試しましたか?

 [plotSpace scaleToFitPlots:[NSArray arrayWithObjects:scatterPlot, nil]];
于 2013-02-19T18:16:27.833 に答える