2

我有一个带有两个线图的核心图(图 1 使用yLHS 上的 - 轴,图 2 使用y2RHS 上的 - 轴)和两个绘图空间(lhsPlotSpacerhsPlotSpace)。

对于初始绘图设置,我使用scaleToFitPlots自动缩放两个绘图,它按预期工作:

[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-scale 因子在平移和缩放之后?

非常感谢!

在此处输入图像描述

4

1 回答 1

2

globalYRange每个绘图空间的 设置为对应yRange的,以防止在 y 方向上缩放和滚动。

-scaleToFitPlots:在计算新范围时使用给定图的所有图数据。如果您想yRange根据可见数据缩放绘图空间,您必须自己在绘图空间委托中执行此操作。委托方法是一个不错的-plotSpace:willChangePlotRangeTo:forCoordinate:选择。

于 2013-01-31T02:00:54.153 回答