【问题标题】:Move core plot x axis to last point将核心图 x 轴移动到最后一点
【发布时间】:2011-10-01 02:33:23
【问题描述】:

我的 iPhone 应用程序中的核心绘图绘制得很好。但是,有一件事我似乎无法弄清楚。如何在视图加载后让图形滚动到其 x 轴的末尾,而不是从原点开始?我希望图表出现时 x 轴上的最后一个数据点可见。怎么样?

我看到了 plotSpace:willDisplaceBy: 委托方法,它“接近”我所需要的,但我需要能够告诉图形在其视图加载时将其自身置换到其 x 轴的末端。我还没有找到任何相关的核心情节示例代码来执行此操作。

【问题讨论】:

    标签: iphone ios core-plot


    【解决方案1】:

    您需要设置绘图空间的xRange,以便最后一个点可见。如果您知道结束值和希望可见的范围的长度,则可以执行以下操作:

    CPTXYPlotSpace *plotSpace = graph.defaultPlotSpace;
    plotSpace.xRange = [CPTPlotRange rangeWithLocation:CPTDecimalFromDouble(end - length)
                                                length:CPTDecimalFromDouble(length)];
    

    该示例假定所需的长度是正数,并且您的值是双倍的。如果需要,您当然可以使用 NSDecimal 值进行计算。

    【讨论】:

    • 完美!这正是我一直在寻找的。愚蠢的我没有看到这一点。非常感谢!
    【解决方案2】:

    使用这个方法:

    -(CPPlotRange *)plotSpace:(CPPlotSpace *)space willChangePlotRangeTo:(CPPlotRange *)newRange forCoordinate:(CPCoordinate)coordinate
    {
        if (coordinate == CPCoordinateY) {
            CPPlotRange *maxRange = [CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(0.0f) length:CPDecimalFromFloat(6.0f)];
            CPPlotRange *changedRange = [[newRange copy] autorelease];
            [changedRange shiftEndToFitInRange:maxRange];
            [changedRange shiftLocationToFitInRange:maxRange];
            newRange =  changedRange;
        }
        return newRange;
    
    }
    

    【讨论】:

    • 这是一个委托方法。我正在寻找一种方法来告诉图表在第一次在屏幕上绘制时在 x 轴上显示最后一项。方法调用需要在我的控制器类的 viewDidLoad() 方法中,或者从那里的方法中调用。无论如何,谢谢。
    • 当你绘制你的图表时尝试这些行 CPPlotRange *xRange = barPlotSpace.xRange; [xRange expandRangeByFactor:CPDecimalFromDouble(1.2)];
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多