简体   繁体   English

Highcharts 股票图表未显示自定义数据

[英]Highcharts stock chart not showing up with custom data

I am trying out the highcharts stock chart.我正在尝试 highcharts 股票图表。 This is the official Fiddle , which works on data from this URL :这是官方的Fiddle ,它处理来自这个URL 的数据:

在此处输入图片说明

I am trying out the same code with a slightly different data form, which I have tweaked in code to resemble exactly the same as in the official demo.我正在尝试使用稍微不同的数据形式的相同代码,我在代码中对其进行了调整,使其与官方演示中的完全相同。 This is the URL from which I am fetching the data , and this is the code which tweaks that data to make it look like the official data.这是从我的获取的URL 数据,这是代码的数据,使该调整它看起来像官方数据。

在此处输入图片说明

var realData = data["Time Series (5min)"];
    
    for (var k in realData)
    {
        var someDate = new Date(k);
            someDate = someDate.getTime();

        var val = realData[k];
        var li = [];
      var vol = [];
      li.push(someDate);
      
      li.push(val["1. open"]);
      li.push(val["2. high"]);
      li.push(val["3. low"]);
      li.push(val["4. close"]);
      ohlc.push(li);
      
      vol.push(val["1. open"]);
      vol.push(val["5. volume"]);
      
      volume.push(vol);
    }

However, as you can see in the output, I am getting a blank pane and not the custom data based chart.但是,正如您在输出中看到的,我得到的是一个空白窗格,而不是基于自定义数据的图表。 Any pointer towards fixing this will be helpful.任何解决此问题的指针都会有所帮助。

Edit.编辑。 Made some changes in the data tweaking based on an answer below, but still I get a weird looking vertical chart here.根据下面的答案对数据调整进行了一些更改,但我仍然在这里看到一个看起来很奇怪的垂直图表。 What I was expecting was a horizontal chart, since the stock value remains constant throughout the day:我期待的是一个水平图表,因为股票价值全天保持不变:

在此处输入图片说明

Your values were strings and not numbers also first value of element in volume should be timestamp, if you switch your loop to this it works您的值是字符串而不是数字, volume中元素的第一个值应该是时间戳,如果您将循环切换到它,它会起作用

    for (var k in realData)
    {
    
      var someDate = new Date(k);
      someDate = someDate.getTime();

      var val = realData[k];
      var li = [];
      var vol = [];
      li.push(someDate);
      
      li.push(val["1. open"]);
      li.push(val["2. high"]);
      li.push(val["3. low"]);
      li.push(val["4. close"]);
      ohlc.push(li.map(x=>Number(x)));
      
      vol.push(someDate);
      vol.push(Number(val["5. volume"]))
      
      volume.push(vol);
    }

also don't use var and preferably don't mutate everything也不要使用var并且最好不要改变一切

In addition to converting string values to numbers, you need to reverse your data order.除了将字符串值转换为数字之外,您还需要颠倒数据顺序。

    var ohlc = [],
        volume = [],
        dataLength = data.length,
        i = 0;

    var realData = data["Time Series (5min)"];

    for (var k in realData) {
        var someDate = new Date(k);
        someDate = someDate.getTime();

        var val = realData[k];
        var li = [];
        var vol = [];
        li.push(someDate);

        li.push(Number(val["1. open"]));
        li.push(Number(val["2. high"]));
        li.push(Number(val["3. low"]));
        li.push(Number(val["4. close"]));
        ohlc.push(li);

        vol.push(someDate);
        vol.push(Number(val["5. volume"]))
        volume.push(vol);
    }

    Highcharts.stockChart('container', {
        ...,
        series: [{
            ...,
            data: ohlc.reverse(),
        }, {
            ...,
            data: volume.reverse()
        }]
    });

Live demo: https://jsfiddle.net/BlackLabel/21aw98j7/现场演示: https : //jsfiddle.net/BlackLabel/21aw98j7/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM