有谁知道我在哪里可以找到一种算法,该算法给定轴的一组值(日期),我可以计算出合理的比例和刻度间隔?
dan
问问题
19176 次
2 回答
6
滴答间隔将取决于您的显示区域。您需要考虑图表的宽度(我假设时间在 X 轴上)和所选字体中日期字符串的宽度,以便得出良好的比例。
基本算法将是这样的。
- 扫描日期列表以查找最小值和最大值。
- 将图形宽度除以日期字符串宽度(如果*两个*宽度都是恒定的,则可以将结果存储在变量中)。如果您使用固定宽度字体和 MM-DD-YYYY 日期格式,此步骤会更容易。如果您使用可变宽度字体和日期格式来拼写月份的名称,则需要在字符串中添加额外的填充以确保每个日期字符串的宽度相同。请注意,我说的是 *extra* 填充。即使您使用固定的日期格式,您也需要至少填充一个空格以避免拥挤。我将把这个值称为“ticks”,因为它正是你的轴上的多少个刻度将根据你的图表的宽度来拟合。
- 计算最短日期和最长日期之间的天数(含)。如何执行此操作取决于您使用的语言。希望你有好的日期和日历实现可以依靠。我将把这个值称为“天”。
- 使用公式“interval = days / (ticks - 1)”计算刻度间隔。
- 通过将“间隔”添加到您的最短日期直到达到最长日期,确定哪些天属于刻度间隔。同样,这将取决于您使用的语言。
于 2008-10-25T12:56:46.627 回答
1
我一直在使用 jQuery flot图形库。它是开源的,并且可以很好地生成轴/刻度线。我建议查看它的代码并从中汲取一些想法。
于 2008-10-27T05:42:24.970 回答