如何自动计算轴的刻度和间隔?

9

有人知道哪里可以找到一个算法,根据轴上的一组值(日期)计算出合理的刻度和刻度间隔吗?


1
我相信你现在已经找到了答案,但是如果有人正在寻找答案,这个链接可能会解决你的问题 - https://dev59.com/Y3RC5IYBdhLWcg3wP-n5 - Mutant
2个回答

6
时间间隔将取决于您的显示区域。您需要考虑到您选择的字体中图形的宽度(我假设时间在X轴上)和日期字符串的宽度,以便得出一个好的比例尺。
基本算法如下:
- 扫描日期列表以查找最小值和最大值。 - 将图形宽度除以日期字符串宽度(如果*两个*宽度都是常数,则可以使用一次结果存储在变量中)。如果您使用等宽字体和MM-DD-YYYY日期格式,则此步骤将更容易。如果您使用可变宽度字体和拼写月份名称的日期格式,则需要添加额外的填充来确保每个日期字符串具有相同的宽度。请注意,我说的是*额外*填充。即使您使用固定日期格式,您也需要至少添加一个空格来避免拥挤。我将其称为`ticks`,因为它完全是基于您图形的宽度而确定的刻度线数量。 - 计算您的最小日期和最大日期之间有多少天(包括这两个日期)。如何计算这将取决于您使用的语言。希望您有好的日期和日历实现可供借鉴。我只是称其为`days`。 - 使用公式`interval = days / (ticks - 1)`计算刻度线间隔。 - 通过将`interval`添加到您的最小日期,直到达到您的最大日期,确定哪些日期落在刻度线间隔上。同样,这将取决于您使用的语言。

1

我一直在使用jQuery flot图形库。它是开源的,并且可以很好地生成坐标轴/刻度。我建议您查看它的代码并从中借鉴一些想法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接