【问题标题】:Core Plot Linear to Logarithmic toggle核心图线性到对数切换
【发布时间】:2019-06-25 21:52:15
【问题描述】:

xScaleType.linear 切换到.log(或.logModulus)时遇到问题。 以下代码导致绘图在 X 方向消失,即仍然可以看到 Y 轴及其刻度,但是 X 轴消失并且在 Y 轴上看到一条数据线。仅当您平移到最左侧的 X 位置 0 时才会出现此问题。如果不为零,则没有问题。

如果我从.log 类型开始,那么一切都很好。我可以毫无问题地平移/缩放到位置 0,如果之前设置为 .linear,则会出现问题。

要重现的代码:

// Set as linear
let plotSpace = ((hostView.hostedGraph as? CPTXYGraph)?.defaultPlotSpace as? CPTXYPlotSpace)
plotSpace?.xScaleType = .linear
plotSpace?.graph?.plot(withIdentifier: plotId as NSCopying?)?.reloadData()

// Some UI user interaction to trigger next code

// Set as log (or logModulus)
plotSpace?.xScaleType = .log
plotSpace?.graph?.plot(withIdentifier: plotId as NSCopying?)?.reloadData()

// Pan to location 0(if not already there).

有人遇到过这种情况或有解决方法吗?

【问题讨论】:

    标签: swift core-plot


    【解决方案1】:

    比例类型 .log 无法处理包含零 (0) 的绘图范围,因为 log(0) 未定义。 .logModulus 刻度类型旨在处理这种情况。请注意,在比例类型之间转换时,您可能还需要更新一些标签参数。默认情况下,对数刻度上的主要刻度线以 10 次方分隔。根据绘图范围,对数刻度甚至可能不会覆盖一个主要的刻度间隔。

    【讨论】:

    • 感谢 Eric 的回复。奇怪的是,如果先选择 .log,即使没有参数/数据更改,它也能正常工作。
    • 我检查了 X 轴位置的零 (0),这就是问题所在。我的 var 初始化 xLocation 是 0.0。一旦我将其更改为0.1,就没有问题了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    相关资源
    最近更新 更多