Aar*_*ron 21 algorithm label graph
我正在寻找一个"好数字"算法来确定日期/时间值轴上的标签.我熟悉Paul Heckbert的Nice Numbers算法.
我有一个在X轴上显示时间/日期的图表,用户可以放大并查看较小的时间范围.我正在寻找一种算法,可以选择好的日期显示在刻度线上.
例如:
漂亮的标签刻度不需要对应于第一个可见点,而是接近它.
有人熟悉这样的算法吗?
您链接的"好数字"文章提到了这一点
十进制中最好的数字是1,2,5和这些数字的所有10次幂的倍数
所以我认为做类似于日期/时间的事情你需要从类似的分解组件开始.因此,采取每种类型的间隔的好因素:
现在很明显,当你进入更大的数量时,这会开始崩溃.当然,你不想显示5周的分钟,即使以30分钟的"漂亮"间隔也是如此.另一方面,当您只有48小时的价值时,您不希望每隔1天显示一次.你已经指出的诀窍是寻找合适的过渡点.
只是预感,我会说合理的交叉点大约是下一个间隔的两倍.这会给你以下(之后显示的最小和最大间隔数)
不幸的是,我们的不一致的时间间隔意味着你最终获得某些情况下,可以有超过1百间隔而另一些则在8或9所以你要选择你的时间间隔的大小,比你没有更多最多10-15个间隔(或者少于5个间隔).此外,如果您认为很容易跟踪,您可以从下一个最大间隔的2倍的严格定义中脱离出来.例如,您可以使用最多3天(72小时)和数周(最多4个月)的工作时间.可能需要进行一些试验和错误.
所以要重新选择,根据范围大小选择间隔类型,然后通过选择一个"漂亮"数字来选择间隔大小,这将使您留下5到15个刻度线.或者,如果你知道的和/或可控制蜱之间的像素的实际数量标志着你可以把上限和下限有多少像素蜱之间可以接受的(如果他们太远隔开图可能难以阅读,但如果有太多的刻度线,图形将会混乱,您的标签可能会重叠).
归档时间: |
|
查看次数: |
4560 次 |
最近记录: |