栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为图形的Y轴选择有吸引力的线性比例

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为图形的Y轴选择有吸引力的线性比例

很久以前,我写了一个图形模块很好地涵盖了这一点。挖掘灰色块得到以下结果:

  • 确定数据的上下限。(请注意下界=上限的特殊情况!
  • 将范围划分为所需的刻度数。
  • 将刻度范围四舍五入成不错的数量。
  • 相应地调整上下限。

让我们举个例子:

15, 234, 140, 65, 90 with 10 ticks
  1. 下界= 15
  2. 上限= 234
  3. 范围= 234-15 = 219
  4. 刻度范围= 21.9。这应该是25.0
  5. 新的下界= 25 *圆(15/25)= 0
  6. 新上限= 25 *舍入(1 + 235/25)= 250

所以范围= 0,25,50,…,225,250

您可以通过以下步骤获得合适的刻度范围:

  1. 除以10 ^ x,使结果介于0.1和1.0之间(包括0.1排除1)。
  2. 相应地翻译:
    • 0.1-> 0.1
    • <= 0.2-> 0.2
    • <= 0.25-> 0.25
    • <= 0.3-> 0.3
    • <= 0.4-> 0.4
    • <= 0.5-> 0.5
    • <= 0.6-> 0.6
    • <= 0.7-> 0.7
    • <= 0.75-> 0.75
    • <= 0.8-> 0.8
    • <= 0.9-> 0.9
    • <= 1.0-> 1.0
  3. 乘以10 ^ x。

在这种情况下,将21.9除以10 ^ 2得到0.219。这是<= 0.25,所以我们现在有0.25。乘以10 ^ 2得到25。

让我们看一下具有8个滴答声的相同示例:

15, 234, 140, 65, 90 with 8 ticks
  1. 下界= 15
  2. 上限= 234
  3. 范围= 234-15 = 219
  4. 刻度范围= 27.375
    1. 用10 ^ 2除以0.27375,转换为0.3,得出(乘以10 ^ 2)30。
  5. 新的下界= 30 *圆(15/30)= 0
  6. 新上限= 30 *舍入(1 + 235/30)= 240

给出您要求的结果;-)。

------ KD添加了------

这是无需使用查找表等即可实现此算法的代码:

double range = ...;int tickCount = ...;double unroundedTickSize = range/(tickCount-1);double x = Math.ceil(Math.log10(unroundedTickSize)-1);double pow10x = Math.pow(10, x);double roundedTickRange = Math.ceil(unroundedTickSize / pow10x) * pow10x;return roundedTickRange;

一般而言,刻度数包括底部刻度,因此实际的y轴分段比刻度数少一个。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/633575.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号