【问题标题】:Highchart / Highstock shows unformated tooltip lable when data grouping enabled but not usedHighchart / Highstock 在启用但未使用数据分组时显示未格式化的工具提示标签
【发布时间】:2018-05-13 19:43:54
【问题描述】:

在 Highcharts / Highstock 中使用带有日期时间的数据分组时,工具提示标签的格式似乎存在问题。

当实际应用数据分组时(即图表中的数据点太多以至于每个数据点的宽度都低于dataGrouping.groupPixelWidth),工具提示的标签是使用dataGrouping.dateTimeLabelFormats 配置选项创建的.

但是当不应用分组时,例如当缩放到每个数据点宽度超过限制时,工具提示的标签根本没有格式化。在日期时间轴的情况下,将显示日期的原始字符串值(与date.toString() 相同)。设置tooltip.xDateFormat 没有帮助。

禁用数据分组时也可能出现这种情况。

看到这个小提琴:https://jsfiddle.net/Jelmerjellema/v3obp9h3/

  • 将鼠标悬停在数据上并检查工具提示:它显示了格式正确的日期时间范围。
  • 通过选择图表的一部分进行放大,直到您看到一刻钟的数据。这是基本的未分组数据。工具提示现在显示格式错误的数据。

    解决方法
    我设法通过确保始终使用分组来解决这个问题。我的原始数据是 15 分钟,所以我确保 dataGrouping.units 包含 15 分钟的块。然后我将dataGrouping.forced 设置为true。这感觉像是个坏把戏,因为当传入的数据变成 5 分钟块时,图表将永远不会显示原始数据。

    当 dateGrouping 启用但未使用时,是否有更好的方法来格式化工具提示中的 x 值?

    谢谢!

  • 【问题讨论】:

    • 你能添加一个演示这个问题的小提琴吗?我不确定你在问什么
    • 会的,抱歉耽搁了
    • 我已经重写了问题,同时发现了一些东西。

    标签: javascript highcharts highstock


    【解决方案1】:

    这个问题的原因是您使用 moment.js 日期而不是 timestamps 作为您的积分的 x 值。

    我将 moment.js 替换为标准的 Date.UTCDate.now 函数(它们返回时间戳),一切正常:

     //create timedata
     var data = [];
     var m = Date.UTC(2016);
     var until = Date.now();
    
     while (m < until) {
    
       data.push({
         x: m,
         y: Math.floor(Math.random() * 1000)
       });
       m += 15 * 60 * 1000;
     }
    

    现场演示: https://jsfiddle.net/kkulig/dLq34dkt/

    文档参考:https://www.highcharts.com/docs/chart-concepts/axes日期时间段落)

    【讨论】:

    • 这是正确的答案,轴应该是unix时间戳。我仍然使用时刻,但我没有使用toDate(),而是使用unix()。请参阅jsfiddle.net/Jelmerjellema/v3obp9h3/10 我将再次检查文档,因为它只说它将在内部使用时间戳,而 Highcharts 示例使用日期。但这很有帮助,谢谢!
    • 嗯....还有一个问题,因为X轴要我们使用时间戳,但是Highstock Navigator和Bands需要日期对象...所以我的解决方案甚至在最低时也强制分组缩放级别仍然效果更好...
    • Highcharts 始终使用datetime 坐标轴的时间戳(即使在导航器和波段中)。您能否提供您提到的使用日期而不是时间戳的示例?
    • 嗨,Kamil,感谢您的思考。我认为它在 setExtremes:jsfiddle.net/Jelmerjellema/v3obp9h3/13 我在主图表的 X 轴上做了一个 setExtremes,我使用 .unix() 的 .toDate() 似乎并不重要。
    • 这不是官方演示,如果我提供不同的日期,它将不起作用:jsfiddle.net/kkulig/nn0sktef 在某些情况下它可能会起作用,但这只是巧合。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 2013-06-07
    相关资源
    最近更新 更多