私は、プレーヤの統計に基づいてサーバーから動的にデータを変更し続けるグラフを持っています。私が抱えている問題は、受信したデータに基づいてグラフをどのように中央に配置するかを考え出すことができないということです。私はそれが適切に構成されていると思ったが、さらにテストすると、グラフが完全に中央から外れていることがわかった。以下は私のreloadDataにあるコードのスニペットです。コアプロットとダイナミックデータを使用してグラフを中央に配置する方法
- (void)reloadData
{
CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)Chart.defaultPlotSpace;
if (maxY < valueMaxY || minY > valueMinY)
{
// Reload the plot graph
maxY = valueMaxY + (valueMaxY/2);
// Properly align the Y-Axis
int tickCount = maxY/5;
if(tickCount <= 1)
{
tickCount = 1;
}
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(tickCount * -1) length:CPTDecimalFromInt(maxY - (tickCount * -1))];
CPTXYAxisSet *axisSet = (CPTXYAxisSet *)Chart.axisSet;
CPTXYAxis *y = axisSet.yAxis;
y.majorIntervalLength = CPTDecimalFromInt(tickCount);
y.minorTicksPerInterval = 1;
NSArray *exclusionRanges = [NSArray arrayWithObjects:
[CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(-2.0) length:CPTDecimalFromFloat(2.0)],
nil];
y.labelExclusionRanges = exclusionRanges;
}
[Chart reloadData];
}
簡単な説明は、グラフを作成するビューに合わせてグラフを中央揃えにすることです。可能であれば、y軸とx軸の両方に5ティックを表示したい。上のスニペットからやってみようとしているのは、ちょうどy軸だけです。サーバーからデータを取得し、値が以前の値より大きくて小さいかどうかを確認することです。次に、reloadDataを呼び出し、受信した値が前のメッセージの最小値または最大値より大きいかどうかを確認します。いずれかの場合、グラフとプロットを再調整します。
アドバイスをいただければ幸いです。