2

2つのラインプロット(プロッ​​ト1はyLHSの-軸を使用し、プロット2はy2RHSの-軸を使用します)と2つのプロットスペース(lhsPlotSpaceおよびrhsPlotSpace)を含むコアプロットチャートがあります。

最初のプロット設定でscaleToFitPlotsは、2つのプロットを自動スケーリングするために使用します。これは、期待どおりに機能します。

[lhsPlotSpace scaleToFitPlots:lhsPlots];
[rhsPlotSpace scaleToFitPlots:rhsPlots];

プロットは、以下のスクリーンショットのようになります。

詳細を表示するために、左右に表示するデータが多い限り、ユーザーが水平方向にパンし、水平方向にズームできるようにします(パンとズームは、-x軸に沿ってのみユーザーが操作する必要があります)。

-axisyy2-axisは、パンとズームの後に表示される範囲に応じて自動的にスケーリングされます。

この問題について少し手伝っていただけませんか。デリゲートを使ってみました

Core PlotフォーラムとStackOverFlowで見つけたコード例に基づいて、デリゲートメソッドを使用してこれを実行しようとしましたplotSpace:willChangePlotRangeTo:forCoordinate

- (CPTPlotRange *)plotSpace:(CPTPlotSpace *)space 
willChangePlotRangeTo:(CPTPlotRange *)newRange 
forCoordinate:(CPTCoordinate)coordinate
{
if (coordinate == CPTCoordinateY) {
   newRange = ((CPTXYPlotSpace*)space).yRange;

return newRange     
}

しかし、非常に基本的なズームを取得する以外に、問題に近い解決策は見つかりませんでした。

どのデリゲートメソッドを使用するか、スクロールを制限する方法、およびyパンとズームの後に新しいスケール係数を設定する方法と場所を教えてください。

どうもありがとうございます!

ここに画像の説明を入力してください

4

1 に答える 1

2

globalYRange各プロット スペースの を対応する に設定yRangeして、y 方向のスケーリングとスクロールを防止します。

-scaleToFitPlots:新しい範囲を計算するときに、指定されたプロットのすべてのプロット データを使用します。yRange表示データに基づいてプロット スペースをスケーリングする場合は、プロット スペース デリゲートで自分で行う必要があります。これ-plotSpace:willChangePlotRangeTo:forCoordinate:にはデリゲート メソッドが適しています。

于 2013-01-31T02:00:54.153 に答える