【问题标题】:IOS Core plot how to get the nearest possible value of minimum Y axis valueIOS核心绘图如何获得最小Y轴值的最接近的可能值
【发布时间】:2015-11-16 19:22:19
【问题描述】:

我正在使用下面的代码来计算 YAxis 值的范围:

plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(yLow_NBH)
                                                length:CPTDecimalFromFloat(yHigh_NBH - yLow_NBH )];
axisSet.yAxis.preferredNumberOfMajorTicks = 4.0;
axisSet.yAxis.labelingPolicy = CPTAxisLabelingPolicyEqualDivisions;

我希望图表从 Y 最小值的最佳可能最近值开始 Y 轴。例如,如果 Ymin 为 5000,两个值之间的间隔为 500,则 yAxis 应从 4500,5000,5500 开始,依此类推。

提前致谢

如果 Ymin 为 9000,我需要将图表作为第二张图片

【问题讨论】:

  • 请描述您所说的“最佳”是什么意思。对于给定的值,5,000 似乎是一个很好的范围开始数字,除非您需要在范围的边缘为绘图符号或数据标签等内容留出额外的空间。还有其他类似的因素需要考虑吗?
  • 最佳可能值意味着 yMin Yaxis 的任何值都应根据区间差异从最接近的 YMin 值开始。假设我有三个值 5000,6500,9000 所以 YMin= 5000 和 YMax =9000。所以范围将是 5000,6000,7000,8000,9000。对于 0 索引,YAxis 值将是 5000,这似乎没有绘制任何内容(没有散线可见),因为 5000 是最小值。我不想保留Ymin 的值为“0”,因为对于更高的值,Interval 也会非常高。我希望范围为 4000,5000,6000 等,以便在图中可以看到 5000 值的绘图
  • Eric 我已将图片附在我的主帖中,以便您了解我的具体要求。
  • 感谢 Eric 格式化代码。请告诉我如何实现这一点?
  • Eric 只是想再添加一件事,Yaxis 的值是动态变化的,所以我无法修复间隔。这对我来说非常紧急。真的需要你的帮助。

标签: ios objective-c graph core-plot


【解决方案1】:

首先,我会坚持使用默认标签策略CPTAxisLabelingPolicyFixedInterval。当您确定首选绘图范围时,您可以选择majorIntervalLength,并确保刻度位置将落在所需的值。

看看 Core Plot 如何使用CPTAxisLabelingPolicyAutomatic 标记策略确定刻度位置(请参阅this method)。您可以使用相同的算法找到最佳刻度间隔,然后调整范围的起始位置和长度,使其落在刻度间隔的偶数倍上。请注意,Core Plot 使用十进制值进行所有数学运算,因此它在非常大和非常小的值下保持准确。如果您知道您的数据始终处于不会导致数值准确性问题的范围内,则可以使用 double 值来简化代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-24
    • 2015-05-13
    • 1970-01-01
    • 2016-01-02
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多