0

私はコア プロットを使用して iPhone アプリでユーザーの体重を表示しています。テスト データをデータ ソース配列に入力すると、完全に機能します。しかし、手動でデータを入力すると、データ ソース配列に要素が 1 つしかない場合、グラフは、単一のポイントが配置されているグラフ上の適切な場所にスケーリングされません。私の単一のテスト データ ポイントは 42 です。グラフが表示されると、Y 範囲が 0 ~ 1 に拡大され、ポイントが画面から外れます。単一のテスト データ ポイントを .5 に設定すると、表示されます。別のポイント (44) を追加すると、グラフは適切にスケーリングされ、42 ~ 44 の Y 範囲が表示されます。

このアプリを作成するときは、Ray Wenderlich のチュートリアルを大いに参考にしました。plotSpace は、グラフのどの範囲が表示されるかを決定するものだと思います (私は Core Plot を使用するのにまだ非常に慣れていません)。このコードは、チュートリアルのほぼそのままです。

// 1 - Get graph and plot space
graph = self.hostView.hostedGraph;
CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *) graph.defaultPlotSpace;

//2 - Create the Weight plot
weightPlot = [[CPTScatterPlot alloc] init];
weightPlot.dataSource = self;
CPTColor *weightColor = [CPTColor greenColor];
[graph addPlot:weightPlot toPlotSpace:plotSpace];

// 3 - Set up plot space
[plotSpace scaleToFitPlots:[NSArray arrayWithObjects:weightPlot, nil]];
CPTMutablePlotRange *xRange = [plotSpace.xRange mutableCopy];
[xRange expandRangeByFactor:CPTDecimalFromCGFloat(1.1f)];
plotSpace.xRange = xRange;
CPTMutablePlotRange *yRange = [plotSpace.yRange mutableCopy];
[yRange expandRangeByFactor:CPTDecimalFromCGFloat(1.2f)];
plotSpace.yRange = yRange;

アドバイスをありがとう!コア プロット コードの残りの部分を投稿することができます。

4

1 に答える 1

0

この-scaleToFitPlots:メソッドには、「妥当な」軸範囲を計算するための 1 つのデータ ポイントだけからの十分な情報がありません。その場合は、持っているデータに基づいて自分でxRangeとを設定します。yRange

于 2013-07-18T02:04:20.657 に答える