【问题标题】:Highcharts JSON formatting - splitting up and preprocessing data for charts?Highcharts JSON 格式 - 为图表拆分和预处理数据?
【发布时间】:2017-12-11 19:39:54
【问题描述】:

我正在尝试从此 JSON 中获取数据:https://min-api.cryptocompare.com/data/histominute?fsym=BTC&tsym=USD&limit=60&aggregate=3&e=CCCAGG

进入hightcharts。

我有这张图表可以正常工作,但我无法为上面的 JSON 获得正确的格式:仍在学习 javascript。而且我喜欢逐个项目地学习,至少有一些原因:)

另外,这个时间戳让我很烦......

$.getJSON('https://www.highcharts.com/samples/data/jsonp.php?filename=aapl-ohlcv.json&callback=?', function (data) {


var ohlc = [],
    volume = [],
    dataLength = data.length,

    groupingUnits = [[
        'week',                        
        [1]                             
    ], [
        'month',
        [1, 2, 3, 4, 6]
    ]],

    i = 0;

for (i; i < dataLength; i += 1) {
    ohlc.push([
        data[i][0], // the date
        data[i][1], // open
        data[i][2], // high
        data[i][3], // low
        data[i][4] // close
    ]);

    volume.push([
        data[i][0], // the date
        data[i][5] // the volume
    ]);
}


// create the chart
Highcharts.stockChart('container', {

    rangeSelector: {
        selected: 1
    },

    title: {
        text: 'AAPL Historical'
    },

    yAxis: [{
        labels: {
            align: 'right',
            x: -3
        },
        title: {
            text: 'OHLC'
        },
        height: '60%',
        lineWidth: 2,
        resize: {
            enabled: true
        }
    }, {
        labels: {
            align: 'right',
            x: -3
        },
        title: {
            text: 'Volume'
        },
        top: '65%',
        height: '35%',
        offset: 0,
        lineWidth: 2
    }],

    tooltip: {
        split: true
    },

    series: [{
        type: 'candlestick',
        name: 'AAPL',
        data: ohlc,
        dataGrouping: {
            units: groupingUnits
        }
    }, {
        type: 'column',
        name: 'Volume',
        data: volume,
        yAxis: 1,
        dataGrouping: {
            units: groupingUnits
        }
    }]
});
});

有人可以帮忙吗?如何从该 JSON 中正确分离信息并对其进行格式化,以便 highcharts 可以将其可视化?

提前感谢您的帮助!

【问题讨论】:

    标签: javascript json api highcharts


    【解决方案1】:

    请参阅此现场演示http://jsfiddle.net/kkulig/8qk0mjzp/

    通过getJSON() 获取的对象的Data 属性包含要在图表上绘制的数据。

    每个点都有 JSON 格式(不是您发布的代码中的数组),因此需要像这样引用它的属性:

      for (i; i < dataLength; i += 1) {
        ohlc.push([
          data[i].time * 1000, // the date
          data[i].open, // open
          data[i].high, // high
          data[i].low, // low
          data[i].close // close
        ]);
    
        volume.push([
          data[i].time * 1000, // the date
          data[i].volumefrom, // low
          data[i].volumeto // high
        ]);
      }
    

    【讨论】:

    • 太棒了,现在我明白了哪里出了问题。非常感谢您的努力和榜样!
    • 卡米尔,有什么联系方式吗?我想要求对日期过滤器进行一些修改,以便 1day、1year 等和 datepicker 工作。我当然会补偿你 :) 拜托,我找不到任何人来帮助我解决这个问题。我在 Google 图表中有示例,但无法将其应用于 hightcharts...
    • 如果您有任何具体问题,请在堆栈溢出时询问他们。
    • 好的,抱歉,没问题。我无法将缩放按钮(1m、3、6m、ytd...)与 JSON 连接起来。我有 JS 逻辑来获取 api,但我没有设法将它连接到图表。这个 api 有 1 小时历史、1 天历史、1 个月和 1 年的 URL 差异。所以我认为这些按钮应该与 API 的 url 相关联。这是 JS 代码:jsfiddle.net/9ao8qdj2 - 非常感谢帮助。还是谢谢!
    • 默认情况下,范围选择器按钮用于设置极值。您可以提供自己的逻辑(例如,从其他 API 获取数据并使用它更新图表)并使用 rangeSelector.buttons.events.click (api.highcharts.com/highstock/rangeSelector.buttons.events.click) 防止默认操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-18
    • 2017-12-11
    • 2017-11-07
    • 2013-02-02
    • 1970-01-01
    相关资源
    最近更新 更多