【问题标题】:How to make a chart with highcharts, load data from API如何使用 highcharts 制作图表,从 API 加载数据
【发布时间】:2020-04-28 01:27:42
【问题描述】:

我是一名新程序员,这是我第一次使用 highcharts。 我也有这样的代码使用 highstocks 库:

Highcharts.getJSON('https://gmlews.com/api/data', function(data) {
  console.log(data);
  var accelero_x = [],
    timestamp = [];
  for (var i = 0; i < data.length; i++) {
    accelero_x.push(data[i].accelero_x);
    timestamp.push(data[i].timestamp);
  }
  console.log(accelero_x);
  console.log(timestamp);
  // Create the chart
  Highcharts.stockChart('container', {

    rangeSelector: {
      selected: 1
    },

    title: {
      text: 'Accelero X'
    },

    series: [{
      name: 'Accelero X',
      data: accelero_x,
      type: 'spline',
      tooltip: {
        valueDecimals: 2
      }
    }]
  });
});

你可以在https://jsfiddle.net/estri012/y1usoxd7/1/看到完整的运行代码

问题是如何根据我的时间戳制作 x 轴?

x 轴正确后的新问题是:在我的 api 中,一些最后的数据是在 19March 中。但在图表上,最后一个数据显示的是 3 月 18 日而不是 3 月 19 日。实际上,我的 API 中没有 3 月 18 日的单一数据。您可以在上面的 URL 上查看 api。同时,之前的其他数据在图表上显示了正确的日期。 这是图表的捕获:

【问题讨论】:

  • 你不能根据你的需要修改他们的例子吗? highcharts.com/stock/demo/spline
  • @Phil 我已经尝试编辑我的问题。现在的问题是如何根据我自己的 API 时间戳制作 x 轴。你能帮我吗?

标签: javascript ajax highcharts timestamp


【解决方案1】:

您需要将数据转换为 Highcharts 所需的格式,在您的情况下 - 数组数组或对象数组 ({ x, y })。

Highcharts.getJSON('https://gmlews.com/api/data', function(data) {
  var seriesData = [];

  for (var i = 0; i < data.length; i++) {
    seriesData.push([
      new Date(data[i].timestamp).getTime(),
      data[i].accelero_x
    ]);
  }

  // Create the chart
  ...
});

现场演示: https://jsfiddle.net/BlackLabel/82vqcwsr/

API 参考: https://api.highcharts.com/highstock/series.line.data

【讨论】:

  • 我有一个问题,图表上显示的最后三个数据是 3 月 18 日,但实际上在我的 API 中是 3 月 19 日。为什么会这样?其他数据没问题。只是那些没有显示正确日期的数据
  • 嗨@Estri。 P Lestari,你能给我提供一些显示问题的在线示例吗?
  • 我用图表的屏幕截图更新了我的问题。你可以在gmlews.com/api/data查看我的API
  • 我这样更新我的代码:jsfiddle.net/estri012/rhon7g3b/16。但仍然没有工作。实际上,时间在 API 中显示如下: 2020-03-15T11:46:10+07:00 。所以在图表上应该是 3 月 15 日 11:46,但它显示的是 3 月 15 日 04:46。最后三个数据在图表上仍然显示 3 月 18 日。我的 API 和图表上的日期时间没有显示相同的结果。如何解决?
  • 我解决了!我需要禁用图表上的 UTC 时区功能,以便我的时间戳看起来与我的 API 数据相同
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-11
  • 2021-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-23
相关资源
最近更新 更多