【问题标题】:How can I automatically calculate axis scale and intervals?如何自动计算轴刻度和间隔?
【发布时间】:2008-10-25 11:32:29
【问题描述】:

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

【问题讨论】:

标签: algorithm graph


【解决方案1】:

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

基本算法是这样的。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2016-01-10
      • 1970-01-01
      • 1970-01-01
      • 2017-07-13
      • 2013-10-22
      • 1970-01-01
      • 1970-01-01
      • 2014-12-11
      相关资源
      最近更新 更多