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

9 algorithm graph

有谁知道我在哪里可以找到给出轴的一组值(日期)的算法我可以计算出合理的比例和刻度间隔?

Bil*_*ard 7

滴答间隔取决于您的显示区域.您需要考虑图形的宽度(我假设时间在X轴上)和所选字体中的日期字符串的宽度,以便提供良好的比例.

基本算法将是这样的.

  • 扫描日期列表以查找最小值和最大值.
  • 将图形宽度除以日期字符串宽度(如果*两个*宽度都是常量,则可以将结果存储在变量中一次).如果使用固定宽度字体和MM-DD-YYYY日期格式,则此步骤将更容易.如果您使用可变宽度字体和日期格式来拼出月份名称,则需要在字符串中添加额外的填充以确保每个日期字符串的宽度相同.请注意,我说*extra*padding.即使您使用固定的日期格式,您也希望用至少一个空格填充它以避免拥挤.我将这个值称为"ticks",因为它确实根据图形的宽度适合轴上的多少个刻度.
  • 计算最小和最大日期(包括)之间的天数.如何执行此操作取决于您使用的语言.希望你有好的日期和日历实现可以依赖.我只是称这个值为'days`.
  • 使用公式`interval = days /(ticks - 1)`计算滴答间隔.
  • 通过将"间隔"添加到最小日期直到达到最大日期,确定哪些天数以滴答间隔为单位.同样,这取决于您使用的语言.