【问题标题】:Showing max y-axis with CorePlot CPTAxisLabelingPolicyAutomatic setting使用 CorePlot CPTAxisLabelingPolicyAutomatic 设置显示最大 y 轴
【发布时间】:2018-09-18 09:57:25
【问题描述】:

我想用 CPTAxisLabelingPolicyAutomatic 设置绘制一个在标签刻度上显示最大 y 轴值标签的图形。但是我还没有发现任何公共功能允许我这样做。

在检查 CorePlot 源代码(autoGenerateMajorTickLocations 方法)后,我想我可以通过使用 CPTDecimalDivide 和 CPTNiceNum 来解决一些问题。我通过使用计算出的“好数字”间隔增加 Y 轴上的 plotRange 来实现我的代码

var majorInterval = CPTDecimalDivide( Decimal(yAxisLength), 
CPTDecimalFromUnsignedInteger(5-1))
majorInterval = CPTNiceNum(majorInterval)

let interval = Int(truncating: majorInterval as NSNumber)
let number = Int(yAxisLength/interval) + 1
yAxisLength = Int(Double(number * interval))

但是 CPTNiceNum 不是公共方法,所以我想知道有没有更好的方法来做到这一点?

【问题讨论】:

    标签: ios swift core-plot


    【解决方案1】:

    在图表上调用 -layoutIfNeeded 以确保轴标签已更新,然后从 y 轴读取 majorTickLocations 集。您可以轻松找到集合中的最大位置值。

    【讨论】:

    • 感谢您的快速回复。我还需要有关刻度间隔的数据,majorIntervalLength 或majorTickLength 是否对应于该值?但它们都是默认值,即使我运行 relabel() 和 updateMajorTickLabels()
    • 好的,我认为majorIntervalLength 或majorTickLength 都用于设置所需的属性,而不是获取CPTAxisLabelingPolicyAutomatic 设置下的信息。有没有其他方法可以获得滴答间隔?还是我必须通过majorTickLocations 集来计算?
    • 刻度长度是在轴上绘制的刻度线的长度。它与刻度线之间的间距无关。 majorIntervalLength 是固定间隔标记策略的输入,并给出主要刻度线之间的所需距离。对于其他标签策略,它会被忽略。要找到刻度之间的间隔,请将位置集放入一个数组中,对其进行排序,然后找到两个相邻位置之间的距离。
    猜你喜欢
    • 2015-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多