数据未出现在HighChart中

时间:2016-07-14 17:30:18

标签: javascript jquery ajax highcharts

我正在尝试创建类似resizable HighChart的内容。 不同之处在于我从blob加载我的数据。 这是我收到的图表: enter image description here

这是收到的数据的一部分,来自console.log(行);:

  

[{date:' 7/13/2016 8:35:00 AM',value:60},{date:' 7/13/2016   上午8:36:00',价值:45},...]

这是我的代码:https://jsfiddle.net/end5xc7m/

series: [{
  turboThreshold: 20000,
  type: 'area',
  name: 'Values to date',
  data: data}

我相信这是我在函数visitorData中遇到问题的地方。

我没有将数据投射到图表上。

1 个答案:

答案 0 :(得分:2)

正如 jlbriggs 所指出的,这是由于格式问题。除非您使用类别绘制轴,否则如果数据以字符串形式输入,则不会绘制Highcharts可视化。

我已经通过一些修复更新了你的小提琴:https://jsfiddle.net/brightmatrix/end5xc7m/2/

function processData(allText) {
    var allTextLines = allText.split(/\r?\n/);
    var lines = [];
    for (var i = 0; i < allTextLines.length - 1; i++) {
        var currentLine = allTextLines[i].split(',');
        var thisLineValue = [Date.parse(currentLine[0]),parseInt(currentLine[1])];
        lines.push(thisLineValue);
    }
    return lines;
}

以下是我改变的内容:

  • 您希望传递给图表的是一组像[x,y]这样的数组,其中这些变量是日期或数字。使用花括号和+连接运算符构建值会将这些值转换为字符串。因此,我创建了一个名为thisLineValue的临时数组,并将其推送到lines数组。
  • 接下来,在该临时数组中,我使用Date.parse()将您的日期值转换为时间戳。当您使用x轴设置时,Highcharts可以很好地理解datetime轴。
  • 对于您的y轴值,我使用parseInt()来避免将这些值转换为字符串。
  • 最后,当您将toString()数组返回到图表时,我删除了lines函数。同样,这会将值保持为图表所期望的格式(日期和数字)。

我希望这对你有所帮助!