我正在寻找一种好的算法来为自定义图表组件上的DateTime轴生成漂亮的主要/次要刻度间隔。我在这里阅读了this previous question,其中讨论了计算数字轴的主要/次要刻度和最小/最大值的好方法。但是,很难将其转换为日期轴计算。
原因是某些日期范围与其他日期范围不同,有些甚至不是一致的时间范围。考虑几分钟内的轴范围。这种计算相当简单,因为您可以使用与上述类似的算法将分钟数除以。但是,如果要求同一轴在年/月或月/周范围内显示数据,您会怎么做?
此轴的要求是它可以计算主要/次要刻度线,以便图表永远不会太杂乱,输入数据范围以毫秒为单位,直到数月和数年。它旨在用于实时图表,因此静态表示不如快速更新的能力那么重要。我的简单算法就是这样做的:
等...
正如你可以看到很多if语句,可能会遗漏一些东西。在这种方法中,我经常在某些日期出现故障,我想知道是否有一种简单或常见的方法来解决这个问题。
祝你好运, 安德鲁
答案 0 :(得分:2)
min_dist_major
)和次要(min_dist_minor
)刻度的最小距离。这些是常量并具有像素值。 min_dist_major
的最小主刻度线。 min_dist_minor
的最小次刻度。如果找不到轻微的刻度,那么它就不存在了。 您可以使用其他刻度扩展数组,例如每种类型的2和5。