计算日期时间轴最小值,最大值和主要次要时间间隔

我正在寻找一个很好的算法来为自定义制图组件上的日期时间轴生成漂亮的主要/次要时间间隔。 这里我已经读过这个前面的问题,它讨论了计算数值轴的主要/次要剔号和最小值/最大值的一个好方法。 但是,很难将其转换为日期轴计算。

原因在于某些日期范围与其他日期范围有所不同,有些日期范围甚至没有一致的时间范围。 考虑几分钟内的轴范围。 这个计算相当简单,因为您可以使用与上面介绍的算法类似的算法将分钟分开。 然而,当同一个坐标轴被要求提供年/月或月/周范围内的数据时,你会做什么?

这个轴的要求是它可以计算主要/次要的刻度线,以便图表不会太混乱,输入数据的范围在毫秒级甚至几年和几年。 它的目的是在实时图表上使用,因此静态表示并不像快速更新的能力那么重要。 我的简单算法做到这一点:

  • 如果范围> 3年,选择专业= 1年,小型= 3个月
  • 如果范围> 1年,选择专业= 3个月,次要= 1个月
  • 如果范围> 3个月,请选择major = month,minor = nothing(但是我认为这周是自月份以来一周不可划分的)
  • 如果范围> 1周,请选择major = 1天,minor =无
  • 如果范围<1天,则根据好数字算法选择小时数
  • 如果范围<1小时,请选择分钟
  • 如果范围<1分钟,请选择秒
  • 等等...

    正如你可以看到很多if语句并且可能会漏掉一些东西。 在这种方法中,我经常会在特定的日期出现小故障,我想知道是否有一种简单或常见的方法来解决这个问题。

    最好的问候,安德鲁


  • 对所有可能的刻度进行排序:1秒,1分钟,1小时,1天,1个月,1年。
  • 确定主要( min_dist_major )和次要( min_dist_minor )打勾的最小距离是min_dist_minor 。 那些是常量并且具有像素值。
  • 在监视器上显示时,查找大于min_dist_major的最小主min_dist_major
  • 然后找到显示器上显示的最小次要滴答,它小于主要滴答,但大于min_dist_minor 。 如果找不到小勾号,则不存在。
  • 您可以使用其他刻度来扩展您的阵列,例如每种类型的2和5。

    链接地址: http://www.djcxy.com/p/61033.html

    上一篇: Calculating Date Time Axis minimum, maximum and major minor tick interval

    下一篇: Core plot with month on x Axis (iphone)