jjzjj

ios - 核心剧情: Pan and zoom two plot spaces along x-axis and auto-scaling both y-axes

coder 2024-01-20 原文

我有一个带有两条线图的 Core Plot 图表(图 1 在左轴上使用 y 轴,图 2 在右轴上使用 y2 轴)和两个绘图空间(lhsPlotSpacerhsPlotSpace)。

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

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

情节看起来类似于下面的屏幕截图。

为了显示更多细节,我想允许用户水平平移和水平缩放,只要左右有更多数据要显示(平移和缩放应该仅由用户驱动 x-轴)。

y 轴和 y2 轴应根据平移和缩放后的可见范围自动缩放。

你能帮我解决一下这个问题吗?我尝试使用委托(delegate)

根据我在 Core Plot 论坛和 StackOverFlow 上找到的代码示例,我尝试使用委托(delegate)方法 plotSpace:willChangePlotRangeTo:forCoordinate

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

return newRange     
}

但除了非常基本的缩放之外,我没有找到更接近我的问题的解决方案。

能否请您指出使用哪些委托(delegate)方法、如何限制滚动以及在平移和缩放后如何以及在何处设置新的 y 比例因子?

非常感谢!

最佳答案

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

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

关于ios - 核心剧情: Pan and zoom two plot spaces along x-axis and auto-scaling both y-axes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14602505/

有关ios - 核心剧情: Pan and zoom two plot spaces along x-axis and auto-scaling both y-axes的更多相关文章

随机推荐