4

设想:

绘制图表。拥有从 A 到 B 的数据点,并且想要决定绘制轴刻度的粒度。例如,对于 134 到 151,比例可能从 130 到 155,以十进制系统中的“整数”数字开始和结束。但数字可能从 134.31 到 134.35,在这种情况下,从 130 到 135 的比例会(视觉上)压缩数据中的“重要性”——最好将比例从 134 画到 135,甚至可能134.3 至 134.4。并且数据值可能会从 0.013431 到 0.013435,或从 1343100 到 1343500。

所以我试图找出一种优雅的方法来计算“粒度”,将下限向下舍入,将上限向上舍入,以生成“令人愉悦”的图表。人们可以以某种方式“破解”它,但这不会让人相信“奇怪”的情况会得到很好的处理。

有任何想法吗?

4

2 回答 2

1

只是一个想法:

  1. 在您的范围内增加大约 10%,根据经验调整这个数字
  2. 将范围大小除以您想要的刻度线数
  3. 取该数字的以 10 为底的对数
  4. 将结果乘以三,然后四舍五入到最接近的整数
  5. 余数模 3 将告诉您是否希望最小有效小数以 1、2 或 5 的步长变化
  6. 整数除以 3 的结果将告诉您使用 10 的幂
  7. 根据刚刚计算的刻度频率,取(扩展的)范围并计算它包含的极值刻度点
  8. 确保所有数据点实际上都在该范围内,如果不是,请添加刻度
  9. 如果需要,通过将上面的整数减一来添加次要刻度
于 2012-11-15T19:59:30.977 回答
0

我发现了一个非常有用的计算,它与 excel 图表的轴比例非常相似:

在此处输入图像描述

它是为 excel 编写的,但我使用并将其转换为 Objective-c 代码来设置我的图形轴。

于 2014-04-03T20:16:17.923 回答